指標陣列:用於儲存指標的陣列,也就是陣列元素都是指標
陣列指標:指向陣列的指標
下面舉例說明:
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...