作者hn12303158 (2orx)
看板C_and_CPP
標題[問題] 陣列小問題
時間Fri Feb 4 01:56:59 2011
請問各位先進, 若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