C++中一般是不能使用變量作爲一個數組的長度的,必須使用常量。
這是因爲數組作爲C++的內置數據類型,其空間分配在棧內存中,這部分空間的大小在編譯時就要確定,不能等到運行時再分配。常量的值在編譯時就能得到,而變量的值在運行時才能確定。
但是仍然有辦法使用變量作爲數組的長度:繞過棧內存,將數組空間開闢在堆空間內:
int *d = new int[n];
這樣這塊內存就是自己開闢的了,可以使用變量初始化數組的長度,內存空間會在運行時動態分配。
注意:
- 使用完這個數組後要delete掉,防止內存泄漏。
- 如果可能的話,使用STL容器替代內置的數組類型,能得到更好的性能和擼代碼體驗。