多維陣列與指標簡析

2021-07-14 10:51:03 字數 954 閱讀 2020

在今天學習c++多維陣列與指標時遇到一些小的問題,再仔細思考之後終於解決疑惑,望我的理解對初學者有一定的幫助。

假設有乙個二維的陣列a,他有3行和4列,它的定義為int a[3][4]=, , };

c++語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a[0],a[1],a[2]。

每乙個一維陣列又含有四個元素。例如a[0]陣列,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。

在此之前我們應該了解,陣列名代表陣列首元素的位址,所以在二維陣列中,a=a[0];現在a[0]不是乙個整形變數,

而是由四個整形元素組成的一維陣列,因此a代表的是首行的起始位址(即第0行的起始位址,&a[0],a[0]+1代表a[1]

行的首位址,即&a[1]).

a[0], a[1], a[2]既然是一位陣列名,而c++又規定了陣列名代表陣列首元素的位址,因此a[0]+1代表一位陣列a[0]中0列

元素的首位址,即&a[0][0].其他的依次類推。那如果用位址法怎麼來表示呢?既然a[0]+1是a[0][1]的值,那麼*(a[0]+1)

就是a[0][1]元素的值。而a[0]又是和*(a+0)無條件等價的,因此也可以用*(*(a+0)+1)表示a[0][1]元素的值,以此類推,

*(a[i]+j)或*(*(a+i)+j)是a[i][j]的值。以下是我要講的重點:

那*(a+0)表是什麼呢?其實*(a+0)表示a[0]這一行當中的四個元素,我們定義二維陣列的指標是這麼定義的,假設定義乙個

指向a[3][4]陣列的指標,int (*p)[4]。這表示什麼呢,表示乙個一位陣列當中的四個指標,因此我們能知道*(a+0)就是取出的

a[0]這一行四個的資料,再由一位陣列的取資料推理即可得到二維陣列當中自己想取得的值。

總結的乙個知識點就是:*(a+0)表示a[0]這一行當中的四個元素,是由定義指向二維陣列的指標所得,即int (*p)[4]。

多維陣列與指標

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

多維陣列與指標

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

多維陣列與指標

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