如何对C ++数组进行值初始化?

时间:2012-05-03 03:19:25

标签: c++ default initializer

1)在C ++中,提供与{}相同的初始化列表{0}?声明:

int x[10]={};

int x[10]={0};

两个都生成相同的数组,所有元素都初始化为0?

2)在NULL不为0的系统/编译器上,对指针数组进行默认值初始化是否将元素设置为NULL或0?应该/可以使用以下哪些陈述?

int *x[10]={NULL};

int *x[10]={0};

int *x[10]={};

使用空括号的new值初始值设定项怎么样?它们是使用NULL还是0作为初始值设定项?

int **x=new int*[10]();

1 个答案:

答案 0 :(得分:5)

  1. 是。这两个初始化程序在功能上都是等效的。区别在于第二个元素显式地将第一个元素初始化为0,并且隐式地对数组中的所有剩余元素进行值初始化(在int的情况下,意味着将它们设置为0)。

    < / LI> 所有符合C ++标准的编译器
  2. NULL0。在这种情况下,所有三个在功能方面都是相同的。 NULL是一个扩展为0的宏,因此前两个在编译器眼中是相同的。我不确定与C ++ 11的交易是什么,但指针的值初始化意味着将指针设置为NULL