這可能是一個非常基本的問題,但我無法在任何地方找到答案,這是我用C編程幾周後第一次遇到問題。本質上,如果我寫一些代碼看起來像這樣:printf給我錯誤的輸出C
int size;
scanf("%d", &size);
printf("size is %d", &size);
如果我輸入,也就是說,大小= 2,該程序將打印背出沿着133692線或類似的東西數量。爲什麼是這樣?我在這裏做錯了什麼?
這可能是一個非常基本的問題,但我無法在任何地方找到答案,這是我用C編程幾周後第一次遇到問題。本質上,如果我寫一些代碼看起來像這樣:printf給我錯誤的輸出C
int size;
scanf("%d", &size);
printf("size is %d", &size);
如果我輸入,也就是說,大小= 2,該程序將打印背出沿着133692線或類似的東西數量。爲什麼是這樣?我在這裏做錯了什麼?
您正在打印size
的地址,即&size
。
只需傳遞一個簡單的size
即可。
刪除printf
語句中的&
作爲&size
- >打印地址。
printf("size is %d", size);
調用約定在printf和scanf中是不同的。
printf的參數通常是值(不是&),但scanf必須有指針。 (&)
(你不能把一個新值,例如1.0,但你可以打印...)
嘗試
printf("size is %d", size);
&
給你的內存位置(地址)變量。
printf("size is %d", &size);
所以,上述將打印的size
的存儲位置(地址),而不是存儲在size
值。
你知道'&'操作符在第一個地方做什麼嗎? – qrdl
...並沒有一個答案被接受! – 2012-11-17 19:16:49
@ user9000他是一個新用戶,這是他的第一個問題,所以......需要時間 –