c 建立二維陣列

2021-09-11 06:59:44 字數 1138 閱讀 8246

c++裡不在『二維陣列』這種型別,二維陣列會被解釋為這個一維陣列的元素是型別是另一種一維陣列。

方法一:使用常量

如果將b宣告為乙個常量,如new int[a][5],它的實質和一維動態陣列沒有太大區別只是陣列元素被宣告為了int[5]。

void testfunc_(unsigned int n)

{ unsigned int i, j;

// 元素型別為『int[5]』的陣列,可賦值給『int[5]』型別的指標.

int (* array2d)[5] = new int[n][5];

for(i=0; i這個方法需要確定b的大小。

方法二:使用指標間接引用

宣告多個一維陣列,然後將這些陣列的首位址按順序儲存到乙個動態陣列中。

void testfunc_pointer(unsigned int height, unsigned int width)

{ unsigned int i, j;

// 陣列的元素型別為『int *』,可賦值給指向『int *』的指標.

int **array2d = new int *[height];

for(i=0; i這個方法實現了兩個維度的動態建立,訪問也比較方便。但是有乙個缺點:由於低一級的陣列是分開建立的,所以整個二維陣列的記憶體不連續——類似『array2d[i * width + j]』這樣的訪問就不要使用了,容易造成訪問越界。

方法三:使用vector

void testfunc_vector(unsigned int height, unsigned int width)

{ typedef std::vectorintvector;

typedef std::vectorintvector2d;

unsigned int i, j;

intvector2d *parray2d = new intvector2d;

// 動態設定大小.

parray2d->resize(height);

for(i=0; i可以看到,在vector這個『更高階』的陣列幫助下,我們能夠很輕易的建立二維陣列。稍微美中不足的是由於引入了stl,程式會變得更大一些——但基本不影響執行速度。

參考資料:

C 動態建立二維陣列

方法1 用一維陣列代替二維陣列 int n,m cin n m int a new int n m for int i 0 icoutcout執行結果 0 00491bb0 1 00491bb4 2 00491bb8 1 00491bbc 2 00491bc0 3 00491bc4 2 00491b...

c 動態建立二維陣列

為了做乙個東西需要用到動態建立二維陣列,特此記錄.include include time.h using namespace std int main srand unsigned time null int x num int y num cout please input x num cin ...

C 建立二維陣列和矩陣

參考 必須讓電腦知道這個二維陣列是怎樣的乙個 即必須告知陣列的列數。最多 只能省略二維陣列的行數。例子 int a m n 這代表了乙個m行n列的二位陣列。或者是int p 用指標定義乙個二位陣列。還有int p n 這定義了乙個未知行n列的二位陣列。構造二維陣列,矩陣 include using ...