[問題] 陣列名稱與指標

作者: kumusou   2014-05-22 18:25:08
各位先進大家好:
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a+1);
value of *ptr-1 = ??
這邊我把它印出來發現是 32766
但是不太懂為什麼
&a 跟 a 都是陣列的起始記憶體位置
所以我猜*ptr-1 會等於 2-1=1才對啊?!
有請高手分析
謝謝!
※ 編輯: kumusou (39.13.28.164), 05/22/2014 18:42:35
※ 編輯: kumusou (39.13.28.164), 05/22/2014 18:43:47
作者: bbuc (C&C++完美經典)   2014-05-22 18:51:00
*(ptr-1)?哦看錯 還是要 ptr = &a+4?
作者: kumusou   2014-05-22 18:55:00
我想問為啥印出來的執會是32766
作者: bbuc (C&C++完美經典)   2014-05-22 18:59:00
應該是因為a是一維指標 &a變成是二維指標了a+1會指到a[1]在一維指標上偏移 &a+1指的不知道是哪裡
作者: remizu (remizu)   2014-05-22 19:07:00
&a的type是int[5] &a+1會加一個int[5]的size所以這裡 ptr是指向a+5的那個位址更正一下 &a的type應該是int(*)[5]
作者: Cloud (抓不住...)   2014-05-22 19:30:00
不過這樣求這值很奇怪,我猜應該是要求*(ptr-1)的值
作者: Feis (永遠睡不著 @@)   2014-05-22 19:36:00
未定義行為
作者: prismwu   2014-05-22 21:50:00
出界啦 同樣覺得想問的是*(ptr-1)
作者: johnpage (johnpage)   2014-05-23 08:16:00
出界+1
作者: Serge45 (QAQ)   2014-05-24 14:09:00
跟我去某家做 RF recorder 面試的題目一樣...XD

Links booklink

Contact Us: admin [ a t ] ucptt.com