二維數(shù)組內(nèi)存空間的動(dòng)態(tài)分配
在學(xué)習(xí)算法時(shí),遇到了很多需要?jiǎng)討B(tài)分配二維數(shù)組的的場(chǎng)景。鑒于知識(shí)儲(chǔ)備比較薄弱,此處進(jìn)行加強(qiáng)。
首先,強(qiáng)化二維數(shù)組的概念:
二維數(shù)組,其實(shí)就是一維數(shù)組。例如:
int a[3][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23}};
其中,a是二維數(shù)組名,a數(shù)組有三行,即擁有三個(gè)行元素,a[0],a[1],a[2];每個(gè)行元素又可以看做是擁有四個(gè)元素的一維數(shù)組。而a[0]、a[1]、a[2]分別是這三個(gè)行元素的數(shù)組名。
所以在二維數(shù)組中,
a[i]=&a[i,0]
a=&(&a[0][0]),即二維數(shù)組名是地址的地址,必須經(jīng)過兩次解引用才能取到a[0][0]的值。
下面是生成楊輝三角的算法代碼:
這里需要做一下記錄:
為二維數(shù)組malloc內(nèi)存空間時(shí),int**這里申請(qǐng)到的是此二維數(shù)組需要的行元素的數(shù)量對(duì)應(yīng)的內(nèi)存空間。而*int所申請(qǐng)的空間是每一個(gè)行元素有多少個(gè)元素組成所需要的內(nèi)存空間,也可以理解成每個(gè)行元素有多少列。
標(biāo)簽: