C++:大小为"variable"的多维数组的类型
C++: Type of multidimensional array with `variable` size
我可以运行这个
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]
的指针,但我认为更多的解释也很有帮助。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '