二維陣列 指標

2021-09-26 11:05:00 字數 2344 閱讀 3570

a ↔ &a[0] (指向第0行)

a+i ↔ &a[i] (指向第i行)

a[0] ↔ &a[0][0] (指向第0行0列)

a[0]+i ↔ &a[0][i] (指向第0行i列)

一維陣列的位址↔二維陣列的行指標,指向該行元素,如&a[i] ↔ a+i​

一維陣列的元素↔二維陣列的行陣列名,​指向該行第乙個元素,如a[i] ↔ &a[i][0]

a是二維陣列名,行指標,增1指向下一行

a[0]是行陣列名,列指標,增1指向下一列

?行指標

①定義:int (*p)[4];(定義了乙個指標變數,指向含有4個元素的整型陣列)

②初始化:p=a;或 p=&a[0];​

③引用位址&a[i][j]→ *(p+i)+j​

元素a[i][j]→ p[i][j] ↔ * (p[i]+j) ↔ * (* (p+i)+j) ↔ (*(p+i))[j]

?列指標

①定義:int *p;(將二維陣列看成m行n列的一維陣列)​

②初始化:p=*a;或 p=a[0];或 p=&a[0][0];

③引用​

位址&a[i][j] → &p[i*n+j]​

元素a[i][j] → p[i* n+j] ↔ * (p+i*n+j)

方法1——二維陣列作形參

#include

#define n 4

void

inputarray

(int p[

][n]

,int m,

int n)

;void

outputarray

(int p[

][n]

,int m,

int n)

;int

main()

/* 形參宣告為列數已知的二維陣列,輸入陣列元素值 */

void

inputarray

(int p[

][n]

,int m,

int n)

/* 形參宣告為列數已知的二維陣列,輸出陣列元素值 */

void

outputarray

(int p[

][n]

,int m,

int n)

}

方法2——行指標作形參

#include

#define n 4

void

inputarray

(int

(*p)

[n],

int m,

int n)

;void

outputarray

(int

(*p)

[n],

int m,

int n)

;int

main()

/* 形參宣告為指向列數已知的二維陣列的行指標,輸入陣列元素值 */

void

inputarray

(int

(*p)

[n],

int m,

int n)

/* 形參宣告為指向列數已知的二維陣列的行指標,輸出陣列元素值 */

void

outputarray

(int

(*p)

[n],

int m,

int n)

}

方法3——列指標作形參(推薦,二維列數動態可變)

#include

void

inputarray

(int

*p,int m,

int n)

;void

outputarray

(int

*p,int m,

int n)

;int

main()

/* 形參宣告為指向二維陣列的列指標,輸入陣列元素值 */

void

inputarray

(int

*p,int m,

int n)

/* 形參宣告為指向二維陣列的列指標,輸出陣列元素值 */

void

outputarray

(int

*p,int m,

int n)

}

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...

二維陣列與二維指標

1.二維陣列的儲存是線性的,可以通過一維指標的方式訪問。如一下 int map 5 5 int mapd map 0 0 則 map i j mapd i 5 j 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...

二維指標和二維陣列

二維指標和二維陣列有三種形式 1,type ptr 2,type ptr或者type prt 3,type prt 三種形式意思相近,也有區別。首先三種形式都能表示二維的資料結構。1,type ptr 表示乙個指向指標的指標 但是在一開始宣告的時候 type ptr ptr到底指向幾個指標是不知道的...