繁体   English   中英

分配没有一维的多维数组

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM