在变量C++周围使用花括号(大括号)

Use of Curly Brackets (Braces) Around a variable C++

本文关键字:变量 C++ 周围使      更新时间:2023-10-16

我在编程课上学习2D数组。我的老师在没有解释的情况下使用了一些东西,我很好奇我们为什么使用它。由于它与符号有关,我不知道如何搜索或搜索它,因为这些符号是在搜索中使用的。无论如何,代码是这样的:

int small[26]= {0}, large[26]={0}, i;

为什么0周围需要花括号?

该代码所属的程序检查文件,查找字母表中的每个字母并单独计数。

它可以写得更简单的

int small[26]= {}, large[26]={}, i;

在数组的情况下,花括号表示初始值设定项列表。

例如,假设您想要定义一个包含元素1、2、3、4、5的数组。

你可以写

int a[5];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;

然而,C++允许在定义数组时分配数组的元素。等效记录将显示为

int a[5] = { 1, 2, 3, 4, 5 };

如果有小于数组大小的初始值设定项,则剩余元素将由零初始化。例如

int a[5] = { 1, 2 };

在这种情况下,a[0]将等于tp 1,a[1]将等于2,并且所有其他元素将等于0。

您可以省略数组的大小。例如

int a[] = { 1, 2, 3, 4, 5 };

在这种情况下,编译器将分配数组中与初始化器列表中有多少初始化器一样多的元素。

记录(仅在C++中有效。在C中不允许)

int a[5] = {};

相当于

int a[5] = { 0 };

也就是说,数组的所有元素都将由0初始化。在最后一条记录中,第一个元素被显式地初始化为零,所有其他元素也被初始化为0,因为它们在初始化器列表中的初始化器没有指定。

与初始化标量对象的方式相同。例如

int x={10};

唯一的区别是,对于标量对象,只能指定一个初始值设定项。你甚至可以在没有分配操作员的情况下写作

int x { 10 };

你也可以写

int x {};

在这种情况下,x将由0初始化。

int Array[26]= {0};

将该数组中的所有元素初始化为0。

正如Bryan Chen在下面提到的:

Note: int Array[26]= {1}; will initialize first element to 1 and others to 0. 

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

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

注意

int array [constant] = {};

默认值初始化所有值。int的默认初始值设定项为0。

int small[26]= {0};

将第一个数字设置为0,并默认初始化其余数字。

一般情况下:

int array [constant] = {value initialize all indices listed here, 
                        the rest are default initialized};