const size_t size = 5;
int *i = new int[size]();
for (int* k = i; k != i + size; ++k)
{
cout << *k << endl;
}
Run Code Online (Sandbox Code Playgroud)
即使我有值使用()运算符初始化动态数组元素,我得到的输出是
135368
0
0
0
0
Run Code Online (Sandbox Code Playgroud)
不知道为什么第一个数组元素被初始化为135368.
有什么想法吗 ?
我首先想到的是:" NO ......只是说NO!"
你有一些真正的,真正的,令人难以置信的好理由不使用矢量吗?
std::vector<int> i(5, 0);
Run Code Online (Sandbox Code Playgroud)
编辑:当然,如果你想将它初始化为零,默认情况下会发生这种情况......
Edit2:如前所述,你要求的是值初始化 - 但是在C++ 2003中添加了值初始化,并且对于某些编译器(尤其是旧编译器)可能无法正常工作.