定義陣列時為什麼不能用含有變數的表示式

fanfan家園發表於2018-01-22

 在棧上建立陣列時,不能使用含有變數的表示式,如:int a[x+2];錯誤

原因:在棧上建立陣列時編譯器編譯的時候就需要在棧上分配記憶體,可是有了變數以後,編譯器就無法知道該分配多大的記憶體空間,故編譯器會報錯。但是定義一般變數如:int a;編譯器會自動識別 int 佔多大記憶體分配給他。


對比:如果是動態建立陣列時(也就是在堆上建立陣列時)可以出現變數如:new a【x+1】;正確;

原因:在堆上建立陣列時,編譯器不會在編譯的時候為它分配記憶體,而是在程式執行的時候為它分配記憶體,我們可以知道,程式執行時變數的值就會明確是多少,故動態建立陣列時可以出現變數;


相關文章