【數(shù)組】關(guān)于二維數(shù)組指針的理解

為了更好的理解二維數(shù)組指針,首先我們先來(lái)理解一維數(shù)組(多維數(shù)組的理解以此類推)。

定義一個(gè)一維的數(shù)組?int kk[3] = {1, 2, 3};

這時(shí)候?qū)τ趉k這個(gè)變量怎么理解呢?因?yàn)閗k表示一個(gè)數(shù)組,且數(shù)據(jù)類型為int,所以這是一個(gè)int?類型的數(shù)組指針。數(shù)據(jù)成員的存儲(chǔ)結(jié)構(gòu)如下:


數(shù)據(jù)成員在內(nèi)存當(dāng)中是連續(xù)存儲(chǔ)的,具體占位多少個(gè)字節(jié),跟數(shù)據(jù)成員的類型相關(guān)。

kk既是數(shù)組的地址,同時(shí)也等于該數(shù)組第一個(gè)成員(這里是整數(shù)1)的地址。即 kk = &kk[0]

通過(guò)數(shù)組下標(biāo)序號(hào)訪問(wèn)該數(shù)組不同位置的成員。比如要獲取數(shù)組kk第二個(gè)成員,kk[1],該成員的地址可以表示為&kk[1],?也可以寫作 kk + 1(kk?是第一個(gè)成員的地址, +1表示向后跳一個(gè)數(shù)組成員尋址,具體跳多少個(gè)字節(jié),跟成員數(shù)據(jù)類型相關(guān),在這里+1是跳過(guò)4個(gè)字節(jié)找到kk[1])



接下來(lái)我們看二維數(shù)組

定義一個(gè) 2 *2的二維數(shù)組 int gg[2][2] = { {1, 2}, [3, 4]};

怎么理解這個(gè)二維數(shù)據(jù)呢,首先我們看下圖:


在我們的視覺(jué)理解,這個(gè)gg應(yīng)該是長(zhǎng)得跟圖中a一樣,2*2的數(shù)組,然而從計(jì)算機(jī)存儲(chǔ)角度理解,二維數(shù)組實(shí)際上是圖中b。所以二維數(shù)組實(shí)際上也是一個(gè)數(shù)組,不過(guò)它存儲(chǔ)的對(duì)象是數(shù)組,而不是一維數(shù)組里面具體的數(shù)值。我們用什么表示一個(gè)數(shù)組?數(shù)組指針,所以二維數(shù)組是一個(gè)存儲(chǔ)數(shù)組指針的數(shù)組。數(shù)組名gg也是該數(shù)組的地址,且根據(jù)二維數(shù)組的存儲(chǔ)結(jié)構(gòu),有g(shù)g = *gg = &gg[0][0],雖然三者的數(shù)值相同,但是三者的含義是不同的

gg?表示二維數(shù)組的地址

*gg?前面說(shuō)了二維數(shù)組是數(shù)組的集合,我們用指針表示數(shù)組,所以也可以二維數(shù)組是數(shù)組指針的集合,對(duì)二維數(shù)組指針取消引用(*),得到的是其成員(數(shù)組指針) 。gg + 1 是該二維數(shù)組第二個(gè)成員,gg + 1跟gg[1]等價(jià),不只是數(shù)值上相等

&gg[0][0]? 這個(gè)很好理解,是先獲取二維數(shù)組的第一個(gè)數(shù)組成員的第一個(gè)成員,然后再取址

所以,用一維數(shù)組的相關(guān)概念去類推二維數(shù)組的一些變量,就很好理解和區(qū)分了。

最后通過(guò)例題加深理解:

遍歷二維數(shù)組gg的所有成員內(nèi)的數(shù)值

方法1:for(int i = 0; i? < 4; ++i){

? ? ? ? ? ? printf("%d\n", *(*gg + i));

}


方法2:

for(int i = 0; i? < 2; ++i){

? ? ? ? ? ? ? ? for(int j = 0; j < 2; ++j){

? ??????????????????printf("%d\n", (*(gg + i))[j]);

}}

方法3:

for(int i = 0; i? < 2; ++i){

? ? ? ? ? ? ? ? for(int j = 0; j < 2; ++j){

????????????????????printf("%d\n", gg[i][j]);

}}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容