数组中的初始化列表

时间:2015-02-22 03:08:18

标签: c++

所以,如果我这样做:

int a[5];

该数组将包含垃圾值。

如果我这样做:

int a[5] = {};

现在它将包含全零,即使我们没有用0来初始化任何这些值。

那么,这里发生了什么?

4 个答案:

答案 0 :(得分:2)

有关详情,请参阅此处:http://www.cplusplus.com/doc/tutorial/arrays/

  

默认情况下,本地范围的常规数组(例如,在函数中声明的数组)保持未初始化状态。这意味着它的所有元素都没有设置为任何特定值;在声明数组时,它们的内容是不确定的。

     

但是,通过将这些初始值括在大括号{}中,可以在声明时将数组中的元素显式初始化为特定值。   初始化程序甚至可以没有值,只有大括号:

     

int a[5] = { };

     

这将创建一个包含五个int值的数组,每个值都使用零值

进行初始化

答案 1 :(得分:0)

你用0来初始化它。

类似地,

int a[5] = {1};

意味着第一个元素用1初始化,其余用0开始。

答案 2 :(得分:0)

int a[5];请求一个连续的内存块足以存储5个整数但不执行任何初始化。

int a[5] = {};请求零初始化内存的连续块足以存储5个整数。

请参阅此SO question/answer

答案 3 :(得分:0)

你的意思是什么"发生了什么"?你刚刚告诉我们发生了什么 第二个例子对值进行零初始化,而第一个例子则没有!

  

现在它将包含全零,即使我们没有用0来初始化任何这些值。

是的,你写了= {}。这意味着什么。