在c++中時不支持變量作為數組長度參數的,如 int n=10;byte bs[n]; 這樣寫會提示編譯錯誤”表達式必須含有常量值“。
雖然用變量聲明數組大小會報編譯錯誤,但是可以通過指針來動態申請空間實現動數組長度的變量賦值,寫法如下:
1 int length = 10; 2 int * varArray; 3 varArray = new int[length];
這樣varArray就可以當做數組來用了,這個數組的長度可以在程序運行時由計算得來。如果是普通的數組如int is[10] 編譯時必須能確定數組長度,不然會報編譯錯誤,這樣靈活性受限比較大。我想這個就是new的存在原因之一吧,在棧中分配的內存,大小都是編譯時就確定好的,如果想在運行時來動態計算使用內存的大小的話,就要用new這樣的動態分配函數,來達到更高的靈活性。
可以自己聲明一個結構體,來代表這個指針實現的數組,這樣可讀性會高點,用起來也方便點。
注意:c++ 用new分配空間以后,不用的時候要記得delete釋放內存,不然會有內存泄露問題。