使用Curly Brackets(Braces)围绕变量C ++

时间:2014-04-16 21:54:29

标签: c++ curly-braces

我正在编程类中学习2D数组。我的老师用了一些东西而没有解释它,我很好奇为什么我们用它。由于它与符号有关,我不确定如何谷歌或搜索它,因为这些符号用于搜索本身。无论如何代码是这样的:

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

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

此代码是程序的一部分,用于检查文件并查找字母表中的每个字母并单独计算。

4 个答案:

答案 0 :(得分:5)

它可以写得更简单

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 };

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

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

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

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

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

int a[5] = {};

相当于

int a[5] = { 0 };

即数组的所有元素都将被初始化为0.在最后一条记录中,第一个元素由零显式初始化,所有其他元素也由零初始化,因为初始化程序列表中的初始化程序未指定。

您也可以初始化标量对象。例如

int x = {10};

唯一的区别是标量对象只能指定一个初始值设定项。您甚至可以在没有赋值运算符的情况下编写

int x { 10 };

你也可以写

int x {};

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

答案 1 :(得分:2)

int Array[26]= {0};

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

正如BryanChen在下面提到的那样:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分: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};