定義陣列時為什麼不能用含有變數的表示式
在棧上建立陣列時,不能使用含有變數的表示式,如:int a[x+2];錯誤
原因:在棧上建立陣列時編譯器編譯的時候就需要在棧上分配記憶體,可是有了變數以後,編譯器就無法知道該分配多大的記憶體空間,故編譯器會報錯。但是定義一般變數如:int a;編譯器會自動識別 int 佔多大記憶體分配給他。
對比:如果是動態建立陣列時(也就是在堆上建立陣列時)可以出現變數如:new a【x+1】;正確;
原因:在堆上建立陣列時,編譯器不會在編譯的時候為它分配記憶體,而是在程式執行的時候為它分配記憶體,我們可以知道,程式執行時變數的值就會明確是多少,故動態建立陣列時可以出現變數;
相關文章
- 【C++】為什麼不能定義陣列的引用,卻可定義變數的引用C++陣列變數
- react中什麼使用定義變數,需要使用useRef,什麼時候直接定義即可?React變數
- Java 陣列的不同定義方式和陣列長度為可變引數Java陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- 為什麼Vue不能觀察到陣列length的變化?Vue陣列
- python怎麼定義陣列Python陣列
- 為什麼在mc檔案裡面定義的FEATURE不能用(轉)
- TS定義陣列 ts宣告函式陣列函式
- DELPHI也可以實現控制元件陣列,用定義陣列變數實現控制元件陣列 (轉)控制元件陣列變數
- 為什麼在安裝jdk的時候要設定環境變數JDK變數
- Python陷阱:為什麼不能用可變物件作為預設引數的值Python物件
- javascript陣列定義JavaScript陣列
- 為什麼defineProperty不能檢測到陣列長度的“變化”陣列
- 引數為*&與*的區別以及二維陣列傳遞時列數不對等的區別陣列
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- C++ 的靜態成員變數為什麼一定要在類外定義C++變數
- JAVA陣列的定義及用法Java陣列
- java 陣列的定義(宣告)方法Java陣列
- 為什麼不建議函式有太多引數?函式
- 為什麼處理排序陣列比未排序陣列快排序陣列
- 為什麼處理有序陣列比無序陣列快?陣列
- 模型的列表定義中,使用函式時如何定義引數?模型函式
- vue在不確定介面何時請求完的情況下,如何改變陣列Vue陣列
- 尋找陣列中和為定值的兩個數陣列
- GO 陣列-多種定義Go陣列
- 管理:為什麼不能用工時來考核研發的工作
- 分支預測:為什麼有序陣列比無序陣列快?陣列
- JavaFX教程-函式、陣列、表示式和操作Java函式陣列
- 學習筆記:vue為什麼不能監聽陣列屬性的變化筆記Vue陣列
- Java 陣列、Java 日期時間、Java 正規表示式、Java 方法Java陣列
- 變數的定義和使用變數
- PHP一維陣列轉二維陣列正規表示式PHP陣列
- 為什麼使用型別化陣列來進行位元組操作而不是普通的 javascript 數字陣列型別陣列JavaScript
- java定時框架:表示式設定Java框架
- 為什麼在pyhton中不能用函式重新賦值函式賦值
- golang常用手冊:陣列、變數作用域、函式Golang陣列變數函式
- 設計模式的數學定義是什麼?設計模式