方法一:使用常量
接上:如果將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...