簡體   English   中英

關於C++中動態多維數組結構的一個小問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM