C 用new建立二維陣列的方法

2021-09-29 23:16:52 字數 857 閱讀 8315

方法一:使用常量

接上:如果將b(即列數)指定為乙個常量,例如new int[a][3],其實質與new int[a]建立乙個動態陣列並無多大區別——只是元素型別由int變為了』int[3]'而已。

示例**:

用這個方法來建立二維陣列,比較直觀、易用,但它最大的限制在於:你必須在編譯時確定b的大小;

int

main

(void)}

// **方法和普通動態陣列相同,使用'delete'即可

delete

array_2d;

system

("pause");

return0;

}

注意記憶體連續,類似array_2d[i*cols+j]這樣的操作可以用。

下圖可以看出其實二維陣列的陣列名就是乙個行指標!

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

首先建立若干個大小一致的動態陣列,然後將這些陣列的首位址(轉化為指標)按順序儲存到乙個動態陣列中,就相當於模擬了乙個二維動態陣列。

示例**:

#include

using

namespace std;

intmain

(void

)

注意記憶體非連續,類似array_2d[i*cols+j]這樣的操作不可用,會造成陣列越界(下圖很清晰地可以通過位址看出)。

C 用new建立二維陣列的方法

問題 在c 中,陣列可以被視為一種型別 但是,不存在 二維陣列 這種型別。二維陣列本身會被解釋成乙個一維陣列 這個陣列的元素型別為另一種一維陣列。比如int 2 3 這個二維陣列,它會被編譯器視作乙個元素型別為 int 3 的一維陣列。並且,int 3 和 int 4 會被當成不同的資料型別。假設a...

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

C 使用new建立二維陣列

include using namespace std void main 以上是一般的程式,需要注意的是,記憶體空間的劃分是5行10列,但是p的維度是按照列,而不是按照行宣告的。在自己編寫benchmark,執行在cpu上時,預期是宣告16 128的陣列,這樣每行是128 4 因為int 4byt...