C++ 数组中的初始化列表

C++ 数组中的初始化列表,c++,C++,因此,如果我这样做: int a[5]; 数组将包含垃圾值 如果我这样做: int a[5] = {}; 现在它将包含所有的零,即使我们没有真正用0初始化这些值中的任何一个 那么,这里发生了什么?您正在用0初始化它 同样地 int a[5] = {1}; 这意味着第一个元素用1初始化,其余元素用0初始化。inta[5]请求一个足够存储5个整数的连续内存块,但不执行任何初始化 inta[5]={}请求一个连续的零初始化内存块,该内存块足以存储5个整数 明白了。你说的“发生了什么事”是什么意思

因此,如果我这样做:

int a[5];
数组将包含垃圾值

如果我这样做:

int a[5] = {};
现在它将包含所有的零,即使我们没有真正用0初始化这些值中的任何一个


那么,这里发生了什么?

您正在用0初始化它

同样地

int a[5] = {1};

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

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

inta[5]={}请求一个连续的零初始化内存块,该内存块足以存储5个整数

明白了。

你说的“发生了什么事”是什么意思?你刚刚告诉我们发生了什么事。
第二个示例zero初始化值,而第一个示例不初始化值

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

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

有关更多信息,请参见此:

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

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

inta[5]={}

这将创建一个由五个int值组成的数组,每个int值初始化为零


如果在{}中没有指定任何值,那么它将采用默认值,即0。发生了什么事???正如你所说的,如果我对一组字符做同样的处理,它会接受默认的字符值吗?字符的默认值是什么?对于字符数组,如果不在大括号中指定任何值,默认值将是“\0”。