首页 > 解决方案 > 如何初始化指向nullptr c ++的动态指针数组

问题描述

我有一个代码:

var *item[8] = { nullptr };

而且效果很好。但我需要动态地做到这一点。这是我尝试过的:

int n = 8;
var **item;
item = new var*[n]();
item = { nullptr };

但这不起作用。区别在哪里,我该怎么办?

//对不起我的英语不好

标签: c++arraysdynamic

解决方案


()initem = new var*[n]();将为您初始化所有指向的指针,nullptr因此您无需在之后手动执行此操作。

int n = 8;
var **item;
item = new var*[n](); // <-- all are nullptr here

现场演示

也就是说,你真的应该使用std::vector而不是new[]直接使用:

int n = 8;
std::vector<var*> item;
item.resize(n);

或者简单地说:

int n = 8;
std::vector<var*> item(n);

现场演示

无论哪种方式都应该初始化指针nullptr。但是,如果您想明确说明,可以这样做:

int n = 8;
std::vector<var*> item;
item.resize(n, nullptr);
int n = 8;
std::vector<var*> item(n, nullptr);

现场演示


推荐阅读