動態數組是指在聲明時,沒有確定數組大小的數組,它可以隨程序需要而重新指定大小。動態數組的內存空間是從堆動態分配的,當程序執行到我們編寫的分配語句時,才為其分配存儲空間。
使用動態數組的優點是可以根據用戶需要,有效利用存儲空間。
inta[10];//靜態數組,在堆棧上創建
intn;
//C語言的malloc函數進行書寫
int*p=(int*)malloc(n*sizeof(int));
變長數組的實際意思是以變量作為長度的數組
,區別于以常數作為長度的數組
。英文Variable-Length Array
(后續都縮寫成VLA),注意這里有一個連接號。
連接號-
代表的意思是,Variable不是一個用于修飾Length的形容詞,而是一個名字名詞(即變量的意思)。
了解了正確的含義后,不難理解VLA的目的就是數組的長度是由一個變量指定的,而非常數。
總結:
變長數組一般是在棧上分配,動態數組一般是在堆上分配。
變長數組在函數返回之后聲明周期就結束了,而動態數組需要手動free掉。
變長數組使用多了容易棧溢出,而且它在c11里只是可選特性,和標準 C++ 也不兼容,所以不建議過多使用。
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
函數
+關注
關注
3文章
4338瀏覽量
62750 -
動態數組
+關注
關注
0文章
3瀏覽量
5977
發布評論請先 登錄
相關推薦
C語言中指針數組和數組指針的區別
指針和數組之間存在著緊密的關系。在本文中,我們將探討指針和數組的關系、指針算術和數組遍歷、多維數組與指針以及指針數組和
發表于 08-17 15:29
?420次閱讀
unpacked數組和packed數組的主要區別
unpacked數組和packed數組的主要區別是unpacked數組在物理存儲時不能保證連續,而packed數組則能保證在物理上連續存儲。
SystemVerilog動態數組的大小更改展示
需要使用" new "操作符實例化一個動態數組,使用[]表示。在實例化過程中,會設置動態數組的大小。
C語言中的數組空間動態開辟
C語言中的數組空間動態開辟 在C語言中,必不可少的需要使用到數組,通常為了動態的開辟數組空間,可以使用 malloc 函數,在C++中可以使
動態數組和C++ std::vector詳解
std::vector是C++的默認動態數組,其與array最大的區別在于vector的數組是動態的,即其大小可以在運行時更改。std::v
數組的定義 什么是數組
數組 數組是內置類型,是一組同類型數據的集合,它是值類型,通過從0開始的下標索引訪問元素值。 在初始化后長度是固定的,無法修改其長度。當作為方法的參數傳入時將復制一份數組而不是引用同一指針。
python列表和數組的區別
內部實現、性能、操作方式等多個方面進行詳細分析,以幫助讀者更好地理解它們之間的區別和適用場景。 一、內部實現: 列表(List): Python中的列表是一種有序的、可變的、可包含不同類型元素的數據結構。列表的實現基于動態數組,
數組和鏈表在內存中的區別 數組和鏈表的優缺點
數組和鏈表在內存中的區別 數組和鏈表的優缺點? 數組和鏈表是常見的數據結構,用于組織和存儲數據。它們在內存中的存儲方式以及優缺點方面存在一些顯著的差異。本文將詳細探討這些差異以及它們的
指針數組和二維數組有沒有區別
指針數組和二維數組有沒有區別?比如這樣的兩個代碼。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
評論