请考虑以下代码:
#include <iostream>
using namespace std;
int main(){
int* p = new int[2];
for (int i = 0; i < 2; i++)
cout << p[i] << endl;
return 0;
}
我跑了好几次。它总是产生以下输出:
0
0
我可以假设C ++默认初始化将数组元素设置为默认值吗?在这种情况下,我可以假设p的元素值始终设置为0吗?
我已阅读以下相关问题。但他们没有具体解决我的问题:
答案 0 :(得分:6)
我可以假设C ++默认初始化将数组元素设置为默认值吗?
- 如果T是数组类型,则数组的每个元素都是默认初始化的;
,元素类型为int
,然后是
- 否则,什么都不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定 值。
另一方面,list initialization(自C ++ 11以来),如int* p = new int[2]{};
或int* p = new int[2]{0};
,或value initialization,如int* p = new int[2]();
,将保证int
所有元素都将被零初始化。