指標陣列和陣列指標

2021-06-28 22:41:01 字數 1798 閱讀 3877

指標陣列的定義形式:

型別名 * 陣列名[陣列長度];

如:int *p[a]

陣列指標的定義形式:

型別名 (* 指標名)[陣列長度];

int (*p)[a];

指標陣列,因為優先順序的關係,所以p先與結合,說明p是乙個陣列,然後再與*結合說明陣列p的元素是指向整形資料的指標。元素分別為p[0],p[1],….,相當於定義了8個整型指標變數。用於存放位址單元,在此,p就是陣列元素為指標的陣列,本質為陣列。

陣列指標,p先與*結合,形成乙個指標,該指標指向的是有8個整型元素陣列,p即為指向陣列首元素位址的指標,其本質為指標。

舉例說明:

intmain(

intargc,

const

char

* argv) ;

int(*p1)[4];

int*p2[4];

inti,j,k;

p1 = arr;

printf("

使用陣列指標的方式訪問二位陣列

arr\n"

);for

(i=0; i<4; i++)

printf

("\n");}

printf

("\n

使用指標陣列的方式訪問二位陣列

arr\n

」 );

for(k=0; k<4; k++)  p2[k] = arr[k];

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

printf

("\n");

}return0;}

執行結果:

使用陣列指標的方式訪問二位陣列

arr

arr[0][0] = 0arr[0][1] = 1arr[0][2] = 2arr[0][3] = 3

arr[1][0] = 4arr[1][1] = 5arr[1][2] = 6arr[1][3] = 7

arr[2][0] = 8arr[2][1] = 9arr[2][2] = 10arr[2][3] = 11

arr[3][0] = 12arr[3][1] = 13arr[3][2] = 14arr[3][3] = 15

使用指標陣列的方式訪問二位陣列

arr

arr[0][0] = 0arr[0][1] = 1arr[0][2] = 2arr[0][3] = 3

arr[1][0] = 4arr[1][1] = 5arr[1][2] = 6arr[1][3] = 7

arr[2][0] = 8arr[2][1] = 9arr[2][2] = 10arr[2][3] = 11

arr[3][0] = 12arr[3][1] = 13arr[3][2] = 14arr[3][3] = 15

陣列指標:

i代表行,j代表列。*(p1+i)代表指向第i行首位址的指標位址,所以*(p1+i)+j代表指向第i行第j列指標位址。用取位址符*取值,*(

*(p1+i)+j

)代表該指標位址對應的內容。

指標陣列:

i代表行,j代表列。

p2[i]代表指向第i行的首位址的指標位址,所以p2[i]+j代表指向第i行第j列的指標位址,用取位址符*取值,*(

p2[i]+j

)代表該指標位址對應的內容。

指標陣列和陣列指標

有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向...

指標陣列和陣列指標

理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...

指標陣列和陣列指標

該文時自己對指標陣列用法的一點總結,還望高手指點不足原文如下 由於以前對指標陣列不太明白,所以自己寫了 乙個小的測試程式來驗證了自己的猜測,先總結如下 指標陣列,由名字就可以知道的該陣列中的成員都是為指標的。其定義的方法為 char p 5 該初定義乙個包含5個char 型別的陣列的指標,由於p本身...