【发布时间】:2018-03-25 05:39:45
【问题描述】:
如果我们这样写:
int *arr = new int[5];
在这种情况下,系统为int类型的5个元素动态分配空间,并返回一个指向序列第一个元素的指针。
但是,一旦我看到下面的代码:
int *arr = new int[5]{};
那么,{} 在new 运算符之后是什么意思?这段代码中{}的用途是什么?
我已经用我自己的值初始化了数组,像这样:
#include <iostream>
int main()
{
int* a = new int[5]{1};
for(int i = 0; i < 5; i++)
std::cout<< a[i]<<' ';
delete[] a;
}
输出:
1 0 0 0 0
只打印第一个元素1。为什么?
【问题讨论】:
-
我建议您花时间阅读this
newreference。在描述语法的表中,请注意 initializer 部分。然后向下滚动到关于Construction 的部分以了解更多信息。 -
该语法从 c++ 11 开始使用。它允许使用花括号内指定的值或在本例中使用零来初始化数组。
-
使用 std::vector!
-
与 stackoverflow.com/questions/620137/… 相同,但使用 C++11 语法。
标签: c++ c++11 initialization new-operator dynamic-memory-allocation