int a[] = {1, 2, 3, 4};
int *ptr = a + 1; //a+1表示表示的是數組a的第一個元素的地址
printf("%d", *(ptr - 1));
輸出結果爲 1。
int a[] = {1, 2, 3, 4};
int *ptr = (int*)(&a + 1); //(int *)(&a + 1)中的(int *)必須加,不然會編譯錯誤。
//&a + 1表示跨過數組a的下一個地址。因爲&a類型爲int(*)[4],是指向 包含4個整型元素的一維數組 的指針,
printf("%d", *(ptr - 1));
輸出結果爲 4。
其實&a和a的值倒是完全一樣的,都是下標爲0的元素的地址,關鍵在於它們的作用域不同!