都說指標是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環境下驗證)
編碼驗證:
3.陣列指標在二維陣列中的應用#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;
}
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)來獲取二維陣列中的元素值
編碼示例:
後續 指標3#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;
}
指標(三) 指標陣列
指標陣列定義 一維指標陣列的定義形式 型別名 陣列名 陣列長度 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 ...