[問題] C pointer
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
gcc
問題(Question):
int a[5] = {1,3,5,7,9};
int *p = (int *)(&a+1);
假設 a 的 address 是 0x7fffc3739200,
為什麼 p 指到的 address 是 0x7fffc3739214
剛開始會覺得p 應該是指到 3的位置,
但是卻發現 +1 是 加了a的大小,也就是 5*sizeof(int),
可以請問為什麼嗎? 謝謝
-------
補充:
試了幾個不同的case, 發覺如果是用 &a+1, 他會用加上 sizeof(a)*1;
也就是說 如果上面的例子是 &a+2,他就會加入 sizeof(a)*2;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.46
推
07/27 11:49, , 1F
07/27 11:49, 1F
→
07/27 11:54, , 2F
07/27 11:54, 2F
→
07/27 12:43, , 3F
07/27 12:43, 3F
→
07/27 12:43, , 4F
07/27 12:43, 4F
※ 編輯: ptt1ptt2ptt3 來自: 140.112.30.46 (07/27 13:09)
→
07/27 13:03, , 5F
07/27 13:03, 5F
→
07/27 13:06, , 6F
07/27 13:06, 6F
→
07/27 13:16, , 7F
07/27 13:16, 7F
→
07/27 15:20, , 8F
07/27 15:20, 8F
→
07/28 01:30, , 9F
07/28 01:30, 9F
→
07/28 01:31, , 10F
07/28 01:31, 10F