[問題] 一個reference的問題

作者: kdok123 (小天)   2014-08-28 00:50:07
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的意思...
有人可以幫我解說嗎??
感謝!
作者: purpose (秀才遇到肥宅兵)   2014-08-28 01:24:00
例子1裡的 &a 資料結構是 int (*pointer)[5],也就是指向int [5] 陣列的指標,這樣型態的指標做 + 1,就會前進五個 int,所以位址就跑到 a + 5 去了

Links booklink

Contact Us: admin [ a t ] ucptt.com