指標(2)指標陣列 陣列指標 陣列指標陣列

2021-09-02 13:09:37 字數 2265 閱讀 3950

都說指標是c語言的精華所在。今天繼續對指標的探索!

指標下一、指標陣列、陣列指標

指標陣列:是存放指標的陣列。    如 int *p[5];  該陣列長度為5,存放的是指向整型變數的指標。

陣列指標:是乙個指向陣列的指標。 如 int (*p)[5];  這是乙個指向長度為5的整型陣列的指標。

1.陣列指標在一維陣列中的應用

int a[5]=;

a;//表示陣列首元素的位址    &a;//表示陣列的位址     雖然它倆取值相同,但是意義卻不同。

因此可以有:   int (*p1)[5];     p1=&a;//ok                p1=a;//error!

int p2;             p2=&a;//error!           p2=a;//ok

p1=&a;//表示的是乙個指向陣列長度為5的陣列 的指標。

p2=a;//表示的是指向了乙個陣列的首位址,也就是乙個元素的位址。

所以我們在使用時一定要搞清楚,我們想要的是乙個元素的位址,還是乙個陣列的位址。

2.如何用陣列指標獲取一維陣列的元素?

(*p1)[i]==a[i];

陣列指標(*p1)可以替換陣列名 a進行工作。區別在於,一維陣列名a相當於乙個一級指標常量。而p1是乙個指標  

變數。因此a不可變,而p1不僅可以指向陣列a,還可以指向其它滿足要求的陣列。(已在vc++6.0環境下驗證)

編碼驗證:

#include int main()

;//驗證a 與 &a的取值相同

printf("%p\n",a);

printf("%p\n",&a);

//驗證 a 與 &a 雖然取值相同但是意義不同。

int (*p1)[5];

p1=a;//會報錯

p1=&a;

int *p2;

p2=&a;//會報錯

p2=a;

//驗證陣列指標在一維陣列中使用方式 (*p1)[i]==a[i];

for(int i=0;i<5;i++)

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

printf("\n");

//驗證陣列指標為變數,可以被再次賦值。

int b[5]=;

p1=&b;

for(i=0;i<5;i++)//陣列指標p1被再次賦值後,對原先被指的陣列無影響。

printf("\n");

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

printf("\n");

return 0;

}

3.陣列指標在二維陣列中的應用

int a[3][4]=;

int (*p)[4];     p=a;  //將二維陣列中的第乙個一維陣列的位址賦值給p 即此時p=a[0];也就是第一行元素的位址

這裡a是乙個二維陣列的陣列名,相當於乙個二級指標常量;

p是乙個指標變數,它指向乙個包含5個int元素的一維陣列,此時p的增量以它所指向的一維陣列長度為單位;

也就是說,此時由 p=a;則p此時指向的是a[0]的位址(第一行的位址),當p+1時,指向的是a[1]的位址(第二行的地

址)即當p+-整數的時候,是以它指向的一維陣列的長度為單位發生移動的。

用陣列指標獲取二維陣列元素:

*(p+i)是一維陣列a[i][0]的位址;

*(p+2)+3表示a[2][3]位址(第一行為0行,第一列為0列),*(*(p+2)+3)表示a[2][3]的值。

二、陣列指標陣列:用來儲存陣列指標的陣列 (了解就好,感覺自己理解的還並不夠徹底!)

如:int (*parr[3])[4];  

用*(parr[i][0]+j)來獲取二維陣列中的元素值

編碼示例:

#includeint main()

; //定義 陣列指標陣列 parr

int (*parr[3])[4];

int i,j;

//給 parr陣列賦值。

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

//用陣列指標陣列 parr 改變被指向的二維陣列內的值 *(parr[i][0]+j

for(i=0;i<3;i++) }

//驗證上述操作是否有效。輸出應為3*4的矩陣且 值全為3

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

printf("\n");

} return 0;

}

後續 指標3

指標(三) 指標陣列

指標陣列定義 一維指標陣列的定義形式 型別名 陣列名 陣列長度 char p 5 乙個陣列,若其元素均為指標型別資料,稱為指標陣列,指標陣列中的每乙個元素都相當於乙個指標變數。指標陣列的初始化 使用位址為指標陣列初始化 char p 5 指標陣列和二級指標 int main char temp 定義...

陣列,指標,指標陣列,陣列指標

指標是在32位系統下佔四個位元組,64位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...

指標, 指標的指標, 陣列, 指標陣列, 陣列指標

指標 int a 10 int p a 指標的指標 int b 20 int p b int p2p p 簡單陣列 int c 10 整數陣列,含有10個整數元素 也就是說每乙個元素都是整數 指標陣列 int p 10 指標陣列,含有10個指標元素 也就是說每乙個元素都是指標 陣列指標 int p ...