C++ 使用动态数组初始化为其索引指定了什么默认值?
我的程序要求数组中的初始值为C++ 使用动态数组初始化为其索引指定了什么默认值?,c++,arrays,pointers,integer,C++,Arrays,Pointers,Integer,我的程序要求数组中的初始值为0 我必须从文件中读取一个int,然后创建该长度的数组 但是,为了确保它们被初始化为0,我正在执行以下操作 但由于编译时不存在从文件读取的no\u,因此会遇到错误 如何在不使用任何循环的情况下实现所需的行为 还有,如果我使用 int* ptr; ptr=new int[no_read_from_file]; 初始化索引是否默认为0 初始化索引是否默认为0 否。这是默认的初始化。默认初始化整数的值不确定 您要做的是值初始化。值初始化整数的值为0。例如: ptr=new
0
我必须从文件中读取一个int,然后创建该长度的数组
但是,为了确保它们被初始化为0
,我正在执行以下操作
但由于编译时不存在从文件读取的no\u,因此会遇到错误
如何在不使用任何循环的情况下实现所需的行为
还有,如果我使用
int* ptr;
ptr=new int[no_read_from_file];
初始化索引是否默认为0
初始化索引是否默认为0
否。这是默认的初始化。默认初始化整数的值不确定
您要做的是值初始化。值初始化整数的值为0。例如:
ptr=new int[no_read_from_file]();
更好的解决方案:通过使用RAII容器避免内存泄漏和错误处理导致的其他错误:
std::vector<int> arr(no_read_from_file);
std::vector arr(不从文件读取);
初始化索引是否默认为0
否。这是默认的初始化。默认初始化整数的值不确定
您要做的是值初始化。值初始化整数的值为0。例如:
ptr=new int[no_read_from_file]();
更好的解决方案:通过使用RAII容器避免内存泄漏和错误处理导致的其他错误:
std::vector<int> arr(no_read_from_file);
std::vector arr(不从文件读取);
您可以使用
#包括
int*ptr;
ptr=new int[不从文件读取];
std::fill(ptr,ptr+no_read_from_file,INIT_VALUE);
INIT\u值
可以是0
或您想要的任何其他值。您可以使用
#包括
int*ptr;
ptr=new int[不从文件读取];
std::fill(ptr,ptr+no_read_from_file,INIT_VALUE);
INIT_值
可以是0
或您想要的任何其他值。在ptr=new int[no_read_from_file]之后放置()
是什么代码>确实如此?@Ahmn21这是值初始化的语法。它确实将数组元素的初始化更改为值初始化,而不是默认初始化。@Ahmn21关于各种类型的初始化,它们的含义以及如何使用它们。@eerorika我必须在()
之间添加任何int
才能进行所需的初始化吗?我的意思是,如果我写(1)
。。所有索引是否都有value=1
?@Ahmn21否。初始化数组时,不能在括号之间放置任何内容。在ptr=new int[No_read_from_file]之后放置()
意味着什么代码>确实如此?@Ahmn21这是值初始化的语法。它确实将数组元素的初始化更改为值初始化,而不是默认初始化。@Ahmn21关于各种类型的初始化,它们的含义以及如何使用它们。@eerorika我必须在()
之间添加任何int
才能进行所需的初始化吗?我的意思是,如果我写(1)
。。所有索引是否都有value=1
?@Ahmn21否。初始化数组时,不能在括号之间插入任何内容。
std::vector<int> arr(no_read_from_file);
#include <algorithm>
int* ptr;
ptr=new int[no_read_from_file];
std::fill(ptr, ptr + no_read_from_file, INIT_VALUE);