繁体   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