C語言 數組

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的元素的地址,關鍵在於它們的作用域不同!

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章