陣列指標和指標陣列

2021-07-24 08:24:58 字數 1181 閱讀 1840

這個跟指標函式與函式指標有點像,所以特意再重新學一學,寫一寫。

就是說,指向陣列的指標(指向陣列的指標),本質上是乙個指標。其實跟使用陣列本身沒什麼區別。

例如: int (*pa)[n], 意思是,pa指向乙個長度為n的陣列,那麼當pa + 1,就會跳過整個陣列,如果有下乙個長度為n的陣列,就會指向下乙個陣列。

這種陣列對二維陣列很有用:

比如說二維陣列:

int  ary[3][5];

int (*pa)[5]; 定義乙個陣列指標,指向長度為5的乙個int 型別陣列

現在就可以把二維陣列的首位址給pa, 首位址就是ary[0]或者&ary[0][0]

pa = ary// 此時pa 指向的是ary的第一行5個元素

pa++ 指向了ary下一行,即,ary[1]行

例子:

int i=0,j=0;

// 測試陣列指標

int a[2][3];

for(i=0;i<2;i++)

for(j=0;j<3;j++)

int (*pa)[3];

pa = a;

for(i=0;i<2;i++)

printf("\n");}

所有元素都為指標的陣列,本質上是乙個陣列,只不過陣列裡面都是指標。

比如說 int* pa[n]; pa[0], pa[1],......,pa[n-1]是陣列裡面的元素,是位址,如果想得到裡面的值,那麼就是*pa[0], *pa[1],......,*pa[n-1]

對於二維陣列的情況:

int ary[3][5];

int *pa[3]; // 注意這個3 和陣列的3行是相同的

那麼, pa[0] 就表示乙個位址,加入pa[0] = ary[0] 或者 pa[0] = &ary[0][0], 就表示pa[0]指向了二維陣列的第一行

所以*(pa[0]+0),*(pa[0]+1),

*(pa[0]+2),

*(pa[0]+3),

*(pa[0]+4);表示二維陣列的5個元素

對於第二行也一樣, 可以用pa[0] + 1, pa[0] + 2

例子:

int * paa[2];

for(i=0;i<2;i++)

printf("\n");}

陣列指標和指標陣列

陣列指標 也稱行指標 定義 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...