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