Moh*_*ohK 2 c++ arrays pointers initialization
如何在 C++ 中声明一个二维指针数组并用空指针初始化它?
我试图这样做
int *arr[20][30]= nullptr;
Run Code Online (Sandbox Code Playgroud)
您可以使用空的初始化列表聚合初始化数组,
int *arr[20][30] {};
// or
int *arr[20][30] = {};
Run Code Online (Sandbox Code Playgroud)
(强调我的)
如果初始化子句的数量少于成员数量
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),按照通常的列表初始化规则(对非类类型执行值初始化和具有默认构造函数的非聚合类,以及聚合的聚合初始化)。
然后arr(即子数组int* [30])的所有元素也将使用空的初始化列表进行聚合初始化,然后具有类型的子数组的所有元素都int*将进行值初始化,
否则,对象是零初始化的。
最后,具有类型int*(内置类型)的元素都被零初始化为空指针。
如果
T是标量类型,对象的初始值是积分常数零显式转换到T。