看板 C_and_CPP 關於我們 聯絡資訊
請問各位先進, 若int a[5] ={1,2,3,4,5}; 則求printf("%x\n", &a+1 ); output將印出多少 這是我在網路上找到的c語言問題, 我原以為答案會是陣列a開頭位址的數字+1 結果發現似乎不是 以下是我測試的結果: int main(){ int a[5] ={1,2,3,4,5}; printf("%x\n", &a); printf("%x\n", &(a[1])); printf("%x\n", &a+1 ); return 0; } output結果為: 22ff50 22ff54 22ff64 而我原本以為第三行答案會是22ff51, 或至少是22ff54(往後移一個指標的位址) 結果都不是^^" 麻煩各位先進解答或糾正我的觀念了, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.220.155
akasan:array 跟 pointer 看起來很像但不是同樣的東西阿... 02/04 02:00
akasan:&a = pointer to int[5] sizeof(int[5]) = sizeof(int)*5 02/04 02:01
akasan:&a +1 => addr(a) + sizeof(int[5]) 02/04 02:02
hn12303158:哈哈, 了解, 我還太嫩了 02/04 02:07