[問題] 陣列用 & 取址做運算之後位址跑出範圍
問題(Question):
int a[5] = {1,2,3,4,5};
int *p = (int *)(&a+1);
*p-1 = ?
預期的正確結果(Expected Output):
小弟怎麼想都是 1
錯誤結果(Wrong Output):
但是實際用 dev c去跑發現竟然是 一個unknown 的數
覺得唯一的可能就是
p = (int *)(&a+1) 時 p拿到的是相當於 a[5]的address
去print的p的address 果然如此
但我不能理解的就是 p = (int *)(&a) 明明就是 &a[0]
怎麼可能 &a+1 address就跑到整個陣列之外了
請問是什麼道理?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.185.139.29
→
06/28 03:48, , 1F
06/28 03:48, 1F
→
06/28 03:49, , 2F
06/28 03:49, 2F
→
06/28 03:52, , 3F
06/28 03:52, 3F
→
06/28 11:07, , 4F
06/28 11:07, 4F
→
06/28 11:09, , 5F
06/28 11:09, 5F
→
06/28 13:14, , 6F
06/28 13:14, 6F
推
06/28 15:46, , 7F
06/28 15:46, 7F
→
06/28 16:41, , 8F
06/28 16:41, 8F
→
06/28 16:58, , 9F
06/28 16:58, 9F
→
06/28 19:33, , 10F
06/28 19:33, 10F
→
06/28 19:34, , 11F
06/28 19:34, 11F
噓
06/29 01:45, , 12F
06/29 01:45, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章