指標陣列和陣列指標的區別

2021-07-15 04:25:29 字數 1138 閱讀 8717

指標陣列:用於儲存指標的陣列,也就是陣列元素都是指標

陣列指標:指向陣列的指標

下面舉例說明:

int* a[4]   指標陣列     

表示陣列a中的元素都為int型指標    

元素表示:*a[i]   *(a[i])是一樣的,因為優先順序高於*

int (*a)[4]  陣列指標     

表示:指向陣列a的指標

元素表示:(*a)[i]  

int (*p)[4]; // 定義乙個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。

int *p[4]; // 定義乙個指標陣列,陣列中每個元素是乙個指標,指標指向**就要根據程式來定了。

判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。

int (*p)[4]; // 由於( )的優先順序高,說明p是乙個指標,指向乙個一維陣列的指標

int *p[4]; // 由於[ ]的優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列

int(*p)[4],這個就是行指標,也就是陣列指標。

說白了,就是定義了四個指標,分別為p[0],p[1],p[2],p[3]。可以將他們單獨拿來使用。

int a1,a2,a3,a4;

p[0] = &a1;

p[1] = &a2;

p[2] = &a3;

p[3] = &a4;

這種型別的指標p是指向乙個一維陣列,這個一維陣列包含4個整形元素

但是int a[4];p = a;這種方式卻是不對的,因為p只能指向乙個整型的一維陣列,不能指向乙個整型資料,a所指向的正是a[0],是個整型數;實際上int(*p)[4]這種型別的指標是用於多維陣列中的,比如定義乙個二維陣列int b[3][4],就可以這樣賦值p = &b[0],使p指向一維陣列b[0],而且p的增減是以一維陣列的長度為單位的,比如p+1指向的就是b[1]了。

int *p[4]這個是指標陣列了,首先弄明白這個是陣列,裡面存放的是指標也就是位址,這個位址所指向的是乙個整型資料,你可以把p[0],p[1]....當作乙個個的指標變數來使用。

int (*p)[4]就相當於int p[4],它就是乙個二維陣列的指標,可以指向乙個第二維度為4的二維陣列。而a就是這樣的陣列,因而

p = a;

是合法的。

指標陣列和陣列指標的區別

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

指標陣列和陣列指標的區別

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

指標陣列和陣列指標的區別

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