看板 C_and_CPP 關於我們 聯絡資訊
各位先進大家好: 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:*(ptr-1)? 05/22 18:51
bbuc:哦看錯 還是要 ptr = &a+4? 05/22 18:53
kumusou:我想問為啥印出來的執會是32766 05/22 18:55
bbuc:應該是因為a是一維指標 &a變成是二維指標了 05/22 18:59
bbuc:a+1會指到a[1]在一維指標上偏移 &a+1指的不知道是哪裡 05/22 19:00
remizu:&a的type是int[5] &a+1會加一個int[5]的size 05/22 19:07
remizu:所以這裡 ptr是指向a+5的那個位址 05/22 19:09
remizu:更正一下 &a的type應該是int(*)[5] 05/22 19:11
Cloud:不過這樣求這值很奇怪,我猜應該是要求*(ptr-1)的值 05/22 19:30
Feis:未定義行為 05/22 19:36
prismwu:出界啦 同樣覺得想問的是*(ptr-1) 05/22 21:50
johnpage:出界+1 05/23 08:16
Serge45:跟我去某家做 RF recorder 面試的題目一樣...XD 05/24 14:09