[英]Allocate a multidimensional array without one dimension
如果我正确int[][10]
了这一点,则int[][10]
是没有第一维的二维数组类型。 当用作函数参数类型时,它应该衰减为int(*)[10]
指针。
我有两个问题:
为什么这在本地范围内失败
int a[][10];
同
错误:具有数组类型的变量的定义需要显式的大小或初始化程序
p2指向的存储区的尺寸是多少
auto p2 = std::make_unique<int[][10]>(2);
?
•p2指向的存储区的尺寸是多少
p2指向的存储区域是线性的。:)但是它表示类型为int[2][10]
的二维数组
声明数组时,必须指定其大小,以便编译器能够确定要分配的内存大小,并在编译时确定对象的类型。
对于此声明,如果它不是函数参数的声明,则该函数参数被隐式转换为指向数组第一个元素的指针
int a[][10];
a的类型不完整。 编译器不知道a的确切类型。 因此它发出一个错误。
此声明之间的区别
auto p2 = std::make_unique<int[][10]>(2);
还有这个
int a[][10];
第一种情况是在运行时动态定义数组,第二种情况是在编译时定义数组,并且编译器必须在运行程序之前知道其类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.