如果你有類型T
和將要分配大小N
那麼這個表達式
new T[N]
的陣列返回的類型T *
的地址分配數組的第一個元素。
所以,你應該寫
T *a = new T[N];
例如,如果T
相當於int類型
typedef int T;
或
using T = int;
那麼上面的配置可以寫
int *a = new int[N];
該數組元素的大小等於sizeof(int)
,通常爲4個字節。
現在我們假設您要分配一組int[M]
類型的元素,其中M
是一個常量整數表達式。
你可以寫
typedef int T[M];
或
using T = int[M];
和
T *a = new T[N];
所以你分配N
元素的數組,其中每個元素都有大小sizeof(int[M]
和指針a
點數組的第一個元素。
由於T
是int [M]
可以寫
int (*a)[M] = new int [N][M];
即此語句分配類型int[M]
的N
元件和指針a
的陣列獲取所分配的陣列的第一個元素的地址等效TP。
返回到你的程序示例
INT R = 5 INT(* A)[C]; a = new int [r] [c];
你可以重寫它通過以下方式
typedef int T[c];
或
using T = int[c];
和
T *a = new T[r];
,它是此語句分配int[c]
類型的r
元素(對象)的數組而a
是指針到分配數組的第一個元素。
您的第一段的最後一項是錯誤的。 'a'被聲明爲一個指向數組5'int'的指針; *而已*。它沒有指向任何東西*(還)。這就是'new []'的用途。 – WhozCraig
二維數組是指向指向數組的指針,每個指向另一個數組(在您的情況下爲整數)。 – Ripi2
你忘記了'int r = 5'後的分號。 – NonCreature0714