2012-05-03 25 views
0

1)在C++中,是否提供了与{0}相同的初始化程序列表{}?请问声明:如何对C++数组进行值初始化?

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]();

+0

对于#2,如果C++ 11应该使用'nullptr'。 – chris

+1

为什么不试一试,看看你得到了什么 –

+0

在所有符合C++标准的编译器上,NULL值为0。 – dreamlax

回答

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

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