[問題] 陣列小問題

看板C_and_CPP (C/C++)作者 (2orx)時間15年前 (2011/02/04 01:57), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
請問各位先進, 若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

02/04 02:00, , 1F
array 跟 pointer 看起來很像但不是同樣的東西阿...
02/04 02:00, 1F

02/04 02:01, , 2F
&a = pointer to int[5] sizeof(int[5]) = sizeof(int)*5
02/04 02:01, 2F

02/04 02:02, , 3F
&a +1 => addr(a) + sizeof(int[5])
02/04 02:02, 3F

02/04 02:07, , 4F
哈哈, 了解, 我還太嫩了
02/04 02:07, 4F
文章代碼(AID): #1DIknjES (C_and_CPP)
文章代碼(AID): #1DIknjES (C_and_CPP)