對於scanf函式,它將引數視為乙個位址,將鍵盤輸入的字元傳到這個位址中去,通常我們都是用的&位址的符號,事實上如果乙個值恰好是乙個位址的話,不加&也一樣可以的:
如下例(測試環境為win7 64位):
#include
void main()
int n = 0x18ff48;
int m = 0x18ff44;
//檢視此時n,m的位址和值
printf("%x:%x\r\n",&n,n);
printf("%x:%x\r\n",&m,m);
scanf("%p",n);
scanf("%p",m);
//檢視此時n,m的位址和值
printf("%x:%x\r\n",&n,n);
printf("%x:%x\r\n",&m,m);
getchar();
這裡我們將n,m的值設為乙個位址格式的值,而且該位址還是空閒記憶體,在scanf輸入的時候略去&,這時候scanf會將n,m的值作為乙個位址,向該位址內寫入資料而不是改變m和n的值。
執行後結果如圖:
scanf輸入的值實際上是傳給了位址18ff48和18ff44處,如果我們加上&,則改變的會是18ff44和18ff40處的值,這也就證明了scanf函式就是將引數視為乙個位址,如果乙個引數值恰好是個位址格式值,不用加&符號也可以賦值,只不過是將引數值作為位址而已。
scanf是什麼意思,為什麼scanf前加
scanf函式返回成功讀入的資料項數,讀入資料時遇到了 檔案結束 則返回eof。scanf d d a,b 函式返回值為int型。如果a和b都被成功讀入,那麼scanf的返回值就是2 如果只有a被成功讀入,返回值為1 如果a和b都未被成功讀入,返回值為0 如果遇到錯誤或遇到end of file,返...
為什麼要加 include stdafx h
所謂標頭檔案預編譯,就是把乙個工程 project 中使用的一些mfc標準標頭檔案 如windows.h afxwin.h 預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。預編譯標頭檔案通過編譯stdafx.cpp生成,以工程名命名,由於預編...
為什麼react列表要加key
遍歷物件的每乙個屬性深度對比是非常浪費效能的 react 使用列表的key來進行對比,如果不指定,就預設為 index 下標 那麼,為什麼 不指定 key 用 index 下標 是不好的呢?假設現在有這樣一段 const users users.map u,i 它會渲染出這個 dom 樹 bob s...