数组中的初始化列表

Initialization lists in arrays

本文关键字:列表 初始化 数组      更新时间:2023-10-16

所以,如果我这样做:

int a[5];

数组将包含垃圾值。

如果我这样做:

int a[5] = {};

它现在将包含所有的零,即使我们没有真正用0初始化这些值中的任何一个。

那么,这里发生了什么?

有关更多信息,请参阅:http://www.cplusplus.com/doc/tutorial/arrays/

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

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

int a[5] = { };

这创建了一个由五个int值组成的数组,每个值都用零初始化

您正在用0初始化它。

类似地,

int a[5] = {1};

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

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

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

请参阅此SO问题/答案。

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

它现在将包含所有的零,即使我们没有真正用0初始化这些值中的任何一个。

是的,你写了= {}。这就是它的意思。