在变量C++周围使用花括号(大括号)
Use of Curly Brackets (Braces) Around a variable C++
我在编程课上学习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};
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- 变量没有改变?通过向量的函数调用