陣列指標和指標陣列

2021-08-15 18:11:08 字數 1386 閱讀 1418

1.陣列指標

2.指標陣列

1.陣列指標

陣列指標:即「陣列的指標」,本質為指標,只不過這個指標指向陣列而已 。如 int (*p)[4] ,說明這個指標p 指向了乙個裡面有4個int元素的陣列

由於 ()的優先順序比 高,*和p先結合,所以 (*p)[4] 本質為指標

#include int main () ;

int (*p)[3];

p=&a;

printf("%p\n",*p); //列印結果:0x7ffc6f432570

printf("%p\n",p); //列印結果:0x7ffc6f432570

printf("%p\n",p[0]); //列印結果:0x7ffc6f432570

printf("%d\n",**p); //列印結果:1

printf("%d\n",*p[0]); //列印結果:1

return 0;

}

第7,8,9行,列印的結果一樣的原因:

p = &a 表示 p變數裝著 陣列 a 的位址。 所以 p 為陣列 a 的位址。而 *p 就是指數組a本身,當如何標識乙個陣列呢?就是用陣列的首元素位址來標識乙個陣列。

而陣列的首元素位址 和 陣列的位址 在值上是一樣的。所以 *p 和 p 的值也是一樣的。

p 既然是陣列a的位址,那 p[0] 自然也是陣列首元素的位址了。所以 p 和 *p 和 p[0] 是一樣的

當 *p 表示的陣列首元素位址時,**p 自然就是表示首元素本身(即首元素的值)。

*p[0] ,因為 優先順序比較高, p[0] 表示首元素位址,所以 *p[0] 就是表示首元素本身。所以 **p = *p[0]

2.指標陣列

指標陣列:即「指標的陣列」 ,本質為陣列,只不過陣列裡裝的是指標。如 int *p[4] 表示此陣列裡有4個元素,這4個元素的型別都是 int* 型別。

由於 的優先順序比 * 高,所以 *p[4] 本質為陣列

#include int main ()

額外:

陣列指標 和 指標陣列 若變數名一樣(例如都為p),他們的寫法就只有符號優先順序的區別,如:

int *p[3] ------指標陣列

int (*p)[3] ------陣列指標

陣列指標和指標陣列

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...

陣列指標和指標陣列

一 定義 陣列指標 陣列指標 是指向陣列 首元素的位址的 指標,其本質為指標 這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動 指標陣列 陣列元素為指標的陣列,其本質為陣列。二 舉例 int a 3 4 這個無需多說,就是乙個 二維陣列 int p 4 就相當於int p 4 它就...

陣列指標和指標陣列

這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...