[問題] 一個reference的問題

看板C_and_CPP (C/C++)作者 (小天)時間11年前 (2014/08/28 00:50), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d",*(ptr-1)); 輸出是5 int a[5]={1,2,3,4,5}; int *ptr=(int *)(a+1); printf("%d",*(ptr-1)); 輸出是1 我能理解第二個例子,可是第一個例子是什麼意思? 我嘗試把a和&a都印了出來,發現兩個位址是一樣的 a+1和&a+1分別和a及&a的位址差距,一個是4一個是20(4*5) 可以理解是跟矩陣大小有關 但還是不理解&a+1的意思... 有人可以幫我解說嗎?? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.218.76 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409158209.A.6CA.html

08/28 01:24, , 1F
例子1裡的 &a 資料結構是 int (*pointer)[5],也就是指向
08/28 01:24, 1F

08/28 01:25, , 2F
int [5] 陣列的指標,這樣型態的指標做 + 1,就會前進
08/28 01:25, 2F

08/28 01:26, , 3F
五個 int,所以位址就跑到 a + 5 去了
08/28 01:26, 3F
文章代碼(AID): #1J_Wn1RA (C_and_CPP)
文章代碼(AID): #1J_Wn1RA (C_and_CPP)