2012-05-03 64 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