【发布时间】:2019-12-17 03:06:39
【问题描述】:
如何在 c++ 中声明一个二维指针数组并通过空指针对其进行初始化?
我尝试过这样做
int *arr[20][30]= nullptr;
【问题讨论】:
标签: c++ arrays pointers initialization
如何在 c++ 中声明一个二维指针数组并通过空指针对其进行初始化?
我尝试过这样做
int *arr[20][30]= nullptr;
【问题讨论】:
标签: c++ arrays pointers initialization
您可以aggregate initialize 初始化列表为空的数组,
int *arr[20][30] {};
// or
int *arr[20][30] = {};
(强调我的)
如果初始化子句的数量小于成员
and bases (since C++17)或初始化列表完全为空,则剩余成员and bases (since C++17)由空列表初始化by their default member initializers, if provided in the class definition, and otherwise (since C++14),按照通常的list-initialization规则(使用默认构造函数对非类类型和非聚合类执行值初始化,并为聚合执行聚合初始化)。
那么arr 的所有元素(即子数组int* [30])也将是aggregate-initialized,并且初始化列表为空,那么int* 类型的子数组的所有元素将是value-initialized ,
否则,对象为zero-initialized。
最后,int*(内置类型)类型的元素都被零初始化为空指针。
如果
T是标量类型,则对象的初始值是整数常量零explicitly converted 到T。
【讨论】: