動(dòng)態(tài)數(shù)組是指在聲明時(shí),沒(méi)有確定數(shù)組大小的數(shù)組,它可以隨程序需要而重新指定大小。動(dòng)態(tài)數(shù)組的內(nèi)存空間是從堆動(dòng)態(tài)分配的,當(dāng)程序執(zhí)行到我們編寫(xiě)的分配語(yǔ)句時(shí),才為其分配存儲(chǔ)空間。
使用動(dòng)態(tài)數(shù)組的優(yōu)點(diǎn)是可以根據(jù)用戶需要,有效利用存儲(chǔ)空間。
inta[10];//靜態(tài)數(shù)組,在堆棧上創(chuàng)建
intn;
//C語(yǔ)言的malloc函數(shù)進(jìn)行書(shū)寫(xiě)
int*p=(int*)malloc(n*sizeof(int));
變長(zhǎng)數(shù)組的實(shí)際意思是以變量作為長(zhǎng)度的數(shù)組
,區(qū)別于以常數(shù)作為長(zhǎng)度的數(shù)組
。英文Variable-Length Array
(后續(xù)都縮寫(xiě)成VLA),注意這里有一個(gè)連接號(hào)。
連接號(hào)-
代表的意思是,Variable不是一個(gè)用于修飾Length的形容詞,而是一個(gè)名字名詞(即變量的意思)。
了解了正確的含義后,不難理解VLA的目的就是數(shù)組的長(zhǎng)度是由一個(gè)變量指定的,而非常數(shù)。
總結(jié):
變長(zhǎng)數(shù)組一般是在棧上分配,動(dòng)態(tài)數(shù)組一般是在堆上分配。
變長(zhǎng)數(shù)組在函數(shù)返回之后聲明周期就結(jié)束了,而動(dòng)態(tài)數(shù)組需要手動(dòng)free掉。
變長(zhǎng)數(shù)組使用多了容易棧溢出,而且它在c11里只是可選特性,和標(biāo)準(zhǔn) C++ 也不兼容,所以不建議過(guò)多使用。
審核編輯:湯梓紅
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64865 -
動(dòng)態(tài)數(shù)組
+關(guān)注
關(guān)注
0文章
3瀏覽量
6016
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論