C 中陣列怎麼使用

2021-06-08 10:23:16 字數 1033 閱讀 1270

種使用,想怎麼用怎麼用

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操作符與多維陣列的誤...