作者:
XX124188 (kinger)
2014-08-28 03:26:00※ 引述《kdok123 (小天)》之銘言:
: 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的意思...
: 有人可以幫我解說嗎??
: 感謝!
請問為什麼會前進5個int@@?
作者: sadanlu (孤冬) 2014-08-28 10:32:00
因為第二個a指標指向陣列名稱, a + 1就會指向下一個陣列名稱, 然後因為轉型成int指標, ptr - 1就變成第一個陣列的最後一個元素