定義:int *p[n];
[ ]優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列,它有n個指標型別的陣列元素。
int a=1,b=2,c=3;
int *p[3] = ; //定義擁有3個元素的指標陣列並賦初值為 a,b,c 位址
printf("%p %p %p \n",&a,&b,&c);
printf("%p %p %p \n",*p,*(p+1),*(p+2));
printf("%d %d %d \n",**p,**(p+1),**(p+2));
程式執行結果:0061ff0c 0061ff08 0061ff04
0061ff0c 0061ff08 0061ff04
1 2 3
定義 int (*p)[n];
( )優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型資料的位址長度而指向下一行。
如果要將二維陣列賦給一指標,應這樣賦值:
int a[3][4];
int (*p)[4]; //該語句是定義乙個陣列指標,指向含4個元素的一維陣列。
p=a; //將該二維陣列的首位址賦給p,也可以是&a[0]
p++; //該語句執行過後,也就是p=p+1;p跨過行a[0][ ]而指向了行a[1][ ]
int (*p)[4]; //定義乙個陣列指標,指向含4個元素的一維陣列
int a[3][4] = , \
, \
};p = a; //將該二維陣列的首位址賦給p,也可以是&a[0]
printf("%d \t", *(*p+1));
p++; //指向下一行
printf("%d \t", *(*p+1));
p = &a[2]; //初始化為第2行
printf("%d ", *(*p+1));
程式執行結果為:2 6 10 C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標陣列和陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...