c語言scanf為什麼要用取地址符

時間 2021-10-14 23:46:23

1樓:

因為scanf要往你的變數裡寫入數值,所以他必須知道那個變數的地址,至於變數裡存的是什麼值,他是不管的,反正他寫入之後就被覆蓋成新的值了

對比printf,他是要輸出變數裡的數值,他只管要那個值,至於地址在哪,他也無所謂

這就是寫和讀的本質性區別,寫只要地址,讀只要值

變數其實同時有地址和值兩個東西,我們一般用一個變數,都是直接寫一個名字,其實如果這個名字在賦值號右邊,就是代表值,如果在賦值號左邊,就是代表地址,寫出來一樣,意義是不一樣的,編譯器自動幫你選擇了正確的意義

變數名字寫在函式引數裡面時,和寫在賦值號右邊一樣,也是代表值,可是像scanf這種函式,他確實需要地址,編譯器只認識賦值號,不認識scanf,沒法自動選到正確的東西,這時就需要你手動加一個取地址的符號&,明確告訴編譯器去選擇變數的地址給這個scanf來用

2樓:飛沛和妙珍

因為scanf這個函式要求的引數傳遞的是地址!!

函式原型:

int scanf(const char *format,...);其呼叫形式為:

scanf("《格式說明字串》",《變數地址》);變數地址要求有效,並且與格式說明的次序一致。

為什麼要用for迴圈語句,c語言中為什麼需要for迴圈?其本義是不是我們需要執行很多次的語句而利用for迴圈只要寫兩個語句就好了?

姣俐夢 只要指定條件為 true 都執行語句塊.for initialization test increment statements 引數initialization 必選項.一個表示式.該表示式只在執行迴圈前被執行一次.test 必選項.一個 boolean 表示式.如果 test 是 tru...

c語言中math h什麼時候要用到

四舍 入 如果程式要解決數學問題,比如說求平方pow x,2 或者求平方根sqrt x 或者求絕對值fabs x 求絕對值函式 fabs三角函式 指數函式等數學函式。這一類的函式在math.h中有宣告,便可直接呼叫,所以要用到。 風雷九州 用到下面的函式的時候就需要包含了。數學函式庫,一些數學計算的...

C語言中整數除以另整數結果為什麼只取整

大野瘦子 因為int 型本身沒小數部分,int和int型的資料操作,得到的結果肯定是整數型的,所以小數部分直接去掉了,就算用 f去輸出,也不會是正確的結果。例如 int a 5,b 3 float c c a b 輸出結果為1.0 c是float型的,按常理c應該等於1.667,但是由於被除數 即變...