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