我想用gcc編譯器執行下面的C程序。訪問指針陣列中的元素
#include <stdio.h>
int main()
{
int *a[] = {1,2,3,4,5,6};
printf("\narr0=%d\n", *a);
printf("arr1=%d\n", *(a+1));
printf("arr2=%d\n", *a+2);
printf("arr3=%d\n", *a+3);
printf("arr4=%d\n", *a+4);
return 0;
}
Output:-
arr0=1
arr1=2
arr2=9
arr3=13
arr4=17
我無法理解當我爲* a + 2,* a + 3,* a + 4跳過括號時發生了什麼。 對於* A + 2其所操縱的:它爲他人
= *a+2
= *a+(4*2) 4 ->Size of int
= 1+(8)
So, *a+2 = 9
同樣的方式。
但我期待輸出如下。 (?)
arr0=1
arr1=2
arr2=3
arr3=4
arr4=5
我知道,我已經聲明瞭指針數組的方式不是很好。
任何人都可以解釋這裏發生了什麼?
注意編譯器警告。如果你的編譯器沒有給出有關不是指針的數組初始化函數的警告,或者打開警告,或者讓自己更好的編譯器(並打開它提供的警告)。 –