二維陣列的指標

2021-07-22 05:08:45 字數 755 閱讀 6661

int main(), , , };

int (*p)[5]=aa;  

//或者

cout<<*(*p+1)會列印2和17. 為啥

記住乙個萬能公式就行了:

*(p + i) = p[i]

int a[2][3]=,} **p; p=a; 

則 *(*(p+1)+2)=p[1][2]

指標(的)陣列:array of pointers,陣列元素都是指標  

int* a[5] 

陣列(的)指標:a pointer to an array,即指向陣列的指標  

int (*a)[5]

對於乙個普通的一位陣列來說,int

c[4]=; 定義乙個int (*a)[4] 表示*a是乙個指標,它指向乙個大小為4的陣列。

所以,對於二維陣列來說,我們

這裡定義了乙個陣列的指標  

int (*p)[5]=aa;

表示*p是乙個指標,它指向乙個大小為5的陣列。也就是說,

*p是個指標,代表每一行的位址。

總結起來,(*(*p))的兩個*,靠近p 的取址符是行指標,遠離的是列

對比給二維陣列賦值的時候類似如下:

先行再列

size_t cnt = 0;

for (auto &row : ia) 

// 對於外層陣列的每乙個元素

for (auto &col : row)

二維陣列 二維陣列和指標

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到底指向幾個指標是不知道的...