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