[英]A small question about structure of dynamic multidimensional array in C++
在這個動態多維數組的聲明中,這種 [4] 的重復究竟做了什么?
int (*array)[4] = new int[10][4];
如果你有這樣的數組
T a[10];
那么 T 是數組元素的類型。
要動態分配這樣的數組,您必須編寫
T *array = new T[10];
現在讓我們通過以下方式將T
定義為 typedef 名稱
typedef int T[4];
或者
using T = int[4];
所以這個聲明
T *array = new T[10];
也適用於這個 typedef。
現在讓我們用相反的方式用 T 代替它的 typedef 定義。 我們將得到
int ( *array )[4] = int[10][4];
因此運算符 new 分配了一個具有 10 個“行”的二維數組,每個“行”又是一個由 4 個 integer 元素組成的數組。
這個記錄
int ( *array )[4]
表示指向 4 個元素的數組(二維數組的元素)的指針。
為了更清楚,讓我們有一個像這樣的數組
T a[N1][N2];
這個二維數組的聲明你可以像這樣重寫
T ( a[N1] )[N2];
這兩個聲明都聲明了相同的二維數組。
要獲取指向數組元素類型的指針,只需將記錄( a[N1] )
替換為( *p )
。 例如
T ( a[N1] )[N2];
T ( *p ){N2] = a;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.