根據我的C++教材,下面的表達式:爲什麼你不能在C++中使用一個數組大小的變量?
cout << "Enter number of students\n";
cin >> number;
int score [number];
是一個非法表達。 我無法使用數組大小的變量。
爲什麼我不能這樣做? (我沒有尋找替代方案,我沒有得到指針,向量等,但我想了解這種行爲。)
根據我的C++教材,下面的表達式:爲什麼你不能在C++中使用一個數組大小的變量?
cout << "Enter number of students\n";
cin >> number;
int score [number];
是一個非法表達。 我無法使用數組大小的變量。
爲什麼我不能這樣做? (我沒有尋找替代方案,我沒有得到指針,向量等,但我想了解這種行爲。)
可變長度數組在ISO C90/ANSI C89中不支持從其派生C++。儘管在C99中添加了偏離C++的VLA,但在C++中它們可以說是不必要的,它具有STL容器類來提供更靈活的方法來存儲多個對象。
另一方面,關於「它們在C++中可能是不必要的」,因爲我們有一個積極的提議並且幾乎什麼都不是絕對必要的,所以它們在C++中也可以被認爲是有用的*。 – 2014-09-29 03:56:20
@ Cheersandhth.-Alf:關於「有爭議」的事 - 你可以爲此爭論。我不會說「一點都不是絕對必要的」,編程語言中的某些特徵對於使它成爲「圖靈完成」是必要的。有人提議,但ISO委員會似乎沒有人着急。 – Clifford 2014-09-29 09:01:26
在C++中,編譯器必須知道要分配給數組的內存量在編譯時。但是,變量的值在運行時間之前是未知的。這就是爲什麼你不能使用變量來表示數組的大小。
如果您需要爲類項目使用數組,我建議使用const
來定義您允許的最大大小。稍後,您將學習如何使用其他技術,如指針和STL容器(如std :: vector)。
實際上並沒有回答這個問題。另外,沒有提到載體。 – 2014-09-29 03:07:22
請注意,這是一種仿古風格,自1998年以來,它是首選編寫'std :: vector
@NeilKirk從技術上講,你是對的,它不回答這個問題,但它確實提供了一個替代方案OP想要實現 – 2014-09-29 03:08:13
因爲C++不允許它。 – 2014-09-29 03:04:03
從編譯器的POV中查看它。在生成目標文件時,它應該爲你的數組保留多少空間? – 2014-09-29 03:04:18
在C'int分數[數字];'是合法的。可變長度數組。 – chux 2014-09-29 03:05:45