带有空指针的 2D 指针数组 c++

Posted

技术标签:

【中文标题】带有空指针的 2D 指针数组 c++【英文标题】:2D array of pointers c++ with null pointers 【发布时间】:2019-12-17 03:06:39 【问题描述】:

如何在 c++ 中声明一个二维指针数组并通过空指针对其进行初始化?

我尝试过这样做

int *arr[20][30]= nullptr;

【问题讨论】:

【参考方案1】:

您可以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

【讨论】:

以上是关于带有空指针的 2D 指针数组 c++的主要内容,如果未能解决你的问题,请参考以下文章

二维数组 C++ 指针地址

如何在 C++ 中确定 2D 无符号短指针数组长度

使用 2D 字符数组时将数组作为指针

c ++通用指针?空指针?

将带有指向数组的指针的类从 C++ 传递到 CUDA

如何在 C++ 中初始化指向动态二维数组的指针 [关闭]