c 中,int a3 int array為什麼會報錯呢?雖然a不是常量,但我已初始化了

時間 2022-11-25 00:51:07

1樓:匿名使用者

c++規定陣列大小(也就是中的數)不能用變數,這是為了防止造成記憶體管理紊亂,因為變數很難保證它在某一時刻是確定的

2樓:匿名使用者

c++中陣列的大小是在編譯時就確定了的,而變數的值則是在執行時才能計算出來的(因為變數的值是可以任意改變的,編譯時是不可能知道的),因此用變數作為陣列的大小自然會產生編譯錯誤。

要動態的定義陣列可以用 new :

int a = 3;

int* array = new int[a];

不過使用完成後要記得delete.

3樓:匿名使用者

當然不行了,因為像int array[10]是建一個靜態陣列,其中的10不能是變數,雖然a已經賦值,但由於我在以後的程序中仍然能對a賦值,c++是絕對不允許這樣的事發生的,你可以在程式開頭定義一個常量比如:

#define a=10;或const int a = 10; 這樣a在一般的情況下就不能改變了。

如果你想建立一個能改變陣列個數的陣列,你可以建立一個動態陣列。比如int a;cin>>a;int *p=new int array[a];這樣你建立了一個可包含a個元素的陣列,而且以後還可以新增或縮減。不過在你建立完畢之後一定要加delete p;否則記憶體不能釋放了。

不過本人認為還是用vector或deque好,兩者非常類似,懂其中一個就理解令一個了。

在標頭檔案中加#include或#include就可以用了

vectora;

int n;

while(cin>>n)

a.push_back(n);

這樣你的資料就被“一個一個”擴充到陣列a裡面了,具體資料你可以查一些資料,很多的書和網頁上都有介紹,總之vector的功能很強大,建議掌握。

4樓:匿名使用者

const int size = 10;

int arr[size];

就可以。

size要是const常量。