我正在编程类中学习2D数组。我的老师用了一些东西而没有解释它,我很好奇为什么我们用它。由于它与符号有关,我不确定如何谷歌或搜索它,因为这些符号用于搜索本身。无论如何代码是这样的:
int small[26]= {0}, large[26]={0}, i;
为什么0周围需要花括号?
此代码是程序的一部分,用于检查文件并查找字母表中的每个字母并单独计算。
答案 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};