5 8 多級指標與多維陣列

2021-07-13 10:18:58 字數 1192 閱讀 2938

多級指標可對應於多維陣列,這種指標變數中存的是另乙個指標變數的位址,其說明如下:

int val=10;

int *ptr=&val;

int **pptr=&ptr;

int ***ppptr=&pptr; //是多少級指標就有多少*號

這裡val值為10,*ptr值也為10,**pptr的值和***ppptr的值均為10。注意這裡的*號與定義中的*號意義不同,前者是指標說明符,後者是運算子,稱間接引用運算子。

【例5.13】多級指標。

#include

using namespace std;

int main()指向陣列(元素)型別的指標,與一維陣列名是等效的:

int a[10], *pa =a;

則寫pa[0] ,就是a[0];

*pa,即a[0];

*(pa+1) 和pa[1] ,都代表a[1]。

指標有兩要素:

位址和所指向目標的資料型別

。a 與pa 兩者都是一樣的,所以pa 可以替代a。二維陣列是陣列元素為一維陣列的陣列,所以等效的指標型別應該是指向一維陣列的指標型別。如有:

int x2d[3][4]=;

int (*pt)[4]=x2d;

則指標pt和x2d是等效的。它們表示的首位址一樣,所指目標型別也一樣,pt可以代替x2d,就象pa代替a一樣。

指向一維陣列的指標的定義如下:

資料型別 (* 指標變數名)[n];

這裡陣列元素的個數n不可省略。因是指向指標的指標,稱二級指標。

【例5.14】用指向二維陣列基本元素的指標變數,和用指向組成二維陣列的一維陣列的指標變數輸出二維陣列全部基本元素。

#include< iostream>

using namespace std;

int main( ),,};

int  * ptr,i,j;

ptr=&a[0][0] ;       //或 ptr = *a; 而不能ptr = a;

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

cout<

int  (* ptr1)[6];       //注意 ptr1是指向包含6個整型元素的一維陣列的指標

ptr1=a;

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

return 0;

}用指向陣列元素的指標把陣列傳遞到函式裡,同時傳遞行列資訊,就可以實現通用性。

C 多級指標與多維陣列

多級指標可對應於多維陣列,這種指標變數中存的是另乙個指標變數的位址,其說明如下 int val 10 int ptr val int pptr ptr int ppptr pptr 是多少級指標就有多少 號 這裡val值為10,ptr值也為10,pptr的值和 ppptr的值均為10。注意這裡的 號...

多維陣列與指標

今天在寫遍歷二維陣列的時候,突然思考這個問題,原因在於作內層迴圈時,對指標和陣列理解不到位。雖然一直都會也寫遍歷二維陣列,但是原先從沒有想過這個問題。逃 標頭檔案 ifndef treble h define treble h includetypedef int int array 3 void ...

多維陣列與指標

用指標變數可以指向一維陣列中的元素,也可以指向多維陣列中的元素,但在概念和使用上,多維陣列的指標比一維陣列的指標要複雜一些。可以認為二維陣列是陣列的陣列。例 定義 int a 3 4 則二維陣列a是由3個一維陣列所組成的,設二維陣列的首行首位址為2000,表示形式 含義位址 a二維陣列名,指向一維陣...