這個問題的關鍵是理解 &a
a是一個數組名,也就是數組的首地址。
對a進行取地址運算符,得到的是一個指向數組的指針!!!!這句話尤為重要!
也就相當於
int (*p) [5] = &a;
p是一個指針,它指向的是一個包含5個int元素的數組!!
那么執行p+1后,p的偏移量相當於 p + sizeof(int) * 5 !!
而程序中強制將指針p轉換成一個int* 那么 p -1 其實就是 p - sizeof(int)
所以,p -1 指向了數組中得最后一個元素,也就是 5