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