種使用,想怎麼用怎麼用
1.a為型別
a (*ga)[n] = new a[m][n];
...
delete ga;
缺點:n必須是已知優點:
呼叫直觀,連續儲存,程式簡潔(經過測試,析構函式能正確呼叫)
2. a **ga = new a *[m];
for(int i = 0; i < m; i++)
ga[i] = new a[n];
...
for(int i = 0; i < m; i++)
delete ga[i];
delete ga;
缺點:非連續儲存,程式煩瑣,
ga為a**型別優點:呼叫直觀,
n可以不是已知
3. a * ga = new a[m*n];
...
delete ga;
缺點:呼叫不夠直觀優點:
連續儲存,n可以不是已知
4. vector> ga;
ga.resize(m); //這三行可用可不用
for(int i = 1; i < n; i++) //
ga[i].resize(n); //
缺點:非連續儲存,除錯不夠方便,編譯速度下降,程式膨脹(實際速度差別不大)
優點:呼叫直觀,自動析構與釋放記憶體,可以呼叫stl相關函式,動態增長
5. vectorga;
ga.resize(m*n);
方法3,4的結合
6. 2的改進版(penrose提供,在此感謝)
a ** ga = new a*[m];
ga[0] = new a[m*n];
for(int i = 1; i < m; i++)
ga[i] = ga[i-1]+n;
...
delete ga[0];
delete ga;
缺點:程式煩瑣,ga為a**型別優點:連續儲存,呼叫直觀,n可以不是已知
c 中空陣列 c 中怎麼清空乙個陣列
class program static void main string args int num 4 要刪除元素的下標 int arr new int console.writeline 刪除前該陣列的長度 arr.length foreach int a in arr console.writ...
全域性陣列怎麼定義 c 陣列使用 配套測試記錄
測試時經驗總結 1.陣列長度超過1百萬,不能儲存在棧上,容易記憶體溢位。存為全域性變數,存在堆上 記憶體分為棧記憶體,堆記憶體,全域性區,常量區,區。棧記憶體儲存的都是區域性變數。由作業系統管理,程式一旦離開作用域,就會釋放變數。棧的大小有限制,常見的是1m或2m大小,因此非常容易超出 堆記憶體儲存...
c 中的動態陣列使用
c 的new操作符是該語言乙個非常好的語法特性,然而實際使用中卻發現new操作符有不少限制,為突出的一點便是用new操作符分配多維陣列空間時,不能讓陣列的每一維都動態可變。本文將對此提出乙個簡單直觀的解決方案,在乙個實際問題的簡化模型中加以說明,並以此釋清許多初學者對c 中new操作符與多維陣列的誤...