C++:大小为"variable"的多维数组的类型

C++: Type of multidimensional array with `variable` size

本文关键字:quot 数组 类型 C++ variable 小为      更新时间:2024-09-30

我可以运行这个

int a = 5; 
auto foo = new int [a][4][4];

但当我尝试这个:

int a = 5; 
int * foo[4][4];
foo = new int [a][4][4];

我得到错误

error: incompatible types in assignment of ‘int (*)[4][4]’ to ‘int* [4][4]’

问题

我必须为foo指定什么类型?

编辑:目标是拥有一个单独的内存块,而不是一个指针数组。

错误消息有点令人困惑,因为它没有说明变量名。

这项工作:

int a = 5; 
int (*foo)[4][4];
foo = new int [a][4][4];

如@john正确识别:

您混淆了指针的2D数组(这就是您编写的(和指向2D数组的指针(这是您想要的(。

那么指向数组的指针和指针数组之间有什么区别。定义指向数组的指针的正确语法(您尝试做的(:

data_type (*var_name)[array_size];

但这定义了一个指针数组(您实际做了什么(:

data_type *var_name[array_size];

@OP在你自己的答案中,你已经找到了正确的类型——指向数组int (*foo)[4][4]的指针,但我认为更多的解释也很有帮助。