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

2021-10-04 16:11:42 字數 1051 閱讀 2748

1.指標陣列

概念:如果每個陣列元素均為指標型別的變數,則稱這樣的陣列為指標陣列。

定義形式:基型別名 *陣列名 [陣列長度];如:int *p[5];

因為 [ ] 比 * 優先順序高,因此陣列名先和 [ ] 結合,表示它是陣列,再與前面的 * 結合,表示此陣列的元素為指標型別,再和前面的基型別名結合,則表示陣列元素為指向基型別變數的指標型別。

上面 int *p[5]表示乙個一維陣列內存放著5個指標變數,分別是p[0],p[1],p[2],p[3],p[4]。可以用 「=」 給指標陣列的各元素賦初值。

如:int i=1; int j=2; int k=3; int m=4; int n=5;

int *p[5]=;

2.陣列指標

概念:如果指標變數是指向陣列或陣列元素,這樣的指標稱為陣列指標。

2.1指向整個陣列的指標變數

定義:基型別名 (*指標變數名)[陣列元素個數];如:int (*p)[5];

()優先順序高,首先說明p是乙個指標變數,指向乙個整型的一維陣列,[5] 表示所指向陣列有5個元素,也可以說是p的步長為5。也就是說執行p+1時,p要跨過5個整型資料的長度。

如要將二維陣列賦給一指標,應這樣賦值:

int a[2][3] ;

int (*p)[3]; //該語句是定義乙個陣列指標,指向含3個元素的一維陣列。

p=a; //將該二維陣列的首位址賦給p,也就是a[0]或&a[0][0]雖然p和a都代表首位址,但區別在於,p是變數,而a是符號常量。

p++; //該語句執行後,也就是p=p+1;p跨過行a[0]指向了行a[1]

所以陣列指標也稱指向一維陣列的指標,亦稱行指標。且移動指標只可用p++或p–,不能用a來移動指標。

2.2指向陣列元素的指標

定義:與指向一般資料的指標變數的方法相同。如:int *p;

c語言中將陣列元素中的 [ ] 稱為變址運算子,一維陣列元素 a[j] 的表示形式等價於 (a+j)。如:int a[10],p=a;

表示式(p+j)或(a+j)都代表陣列元素a[j]。p+j 或 a+j 都表示 a[j] 的位址&a[j]。

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

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

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

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

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

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