建立二維陣列的方法選擇

2021-10-25 21:57:27 字數 1499 閱讀 4162

參考資料

今天搜尋看見milo yip的知乎回答,講解c語言幾種二維陣列的建立方法及優劣。這裡總結分享一下。

如果二維陣列長度一定,最簡單的方法也最有效

const size_t m =

10, n =20;

// size_t 一般為 unsigned long long

// const 宣告常量避免 magic number

// const 宣告常量略優於 #define

int a[m]

[n];

如果需要矩形陣列的話,最佳方法是乙個指標加上開闢一整塊空間,略不方便的是下標需要自行計算。

但如果使用二級指標,會多消耗儲存二級指標的空間,以及每次訪問元素時,從指標所存的位址跳轉到對應記憶體的時間。

const size_t m =

10, n =20;

int* a =

(int*)

malloc

(m * n *

sizeof

(int))

;int i, j;

// 舊版本編譯器不支援for迴圈內宣告變數

for(i =

0; i < m;

++i)

// ++i 略優於 i++

for(j =

0; j < n;

++j)

a[i * n + j]

=/* ... */

;/* ... */

free

(a);

// 使用後釋放指標好習慣

如果矩形陣列浪費空間,只需要鋸齒形陣列(jagged array)的話,這時才需要二級指標。

const size_t m =

10, n =20;

int*

* a =

(int**

)malloc

(m *

sizeof

(int*)

);int i;

for(i =

0; i < m;

++i)

a[i]=(

int)

malloc

(n *

sizeof

(int))

;/* ... */

for(i =

0; i < m;

++i)

free

(a[i]);

free

(a);

使用其他資料結構,如一維陣列加鍊表等。

建立不定長陣列的方法:

一級指標+開闢一整塊空間

優點:空間、時間開銷低

缺點:下標需要自行計算

使用二級指標

優點:可以直接訪問下標

缺點:多消耗空間、時間

其他更合適的資料結構

milo yip知乎回答

高人指點

new動態建立二維陣列的方法

1.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 d...

建立二維陣列的方法(隨時更新

對於常規的方法 t n n 的方法我就不說了。首先介紹兩個動態的建立方法,然後介紹一下c 標準的中使用stl的容器vector建立二維陣列的方法。1.定義 const int row 3 int size 5 int pi row new int size row 操作方法 int k 0 cout...

建立二維陣列的方法(隨時更新)

對於常規的方法 t n n 的方法我就不說了。首先介紹兩個動態的建立方法,然後介紹一下c 標準的中使用stl的容器vector建立二維陣列的方法。1.定義 const int row 3 int size 5 int pi row new int size row 操作方法 int k 0 cout...