首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在变量C++周围使用卷括号(Braces)

在变量C++周围使用卷括号(Braces)
EN

Stack Overflow用户
提问于 2014-04-16 21:54:29
回答 4查看 11.4K关注 0票数 7

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

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

为什么在0附近需要花括号?

这个程序--这段代码是检查文件的一部分,查找字母表中的每一个字母,并分别对它们进行计数。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-16 22:04:35

它可以写得更简单

代码语言:javascript
复制
int small[26]= {}, large[26]={}, i;

在这种数组的情况下,花括号意味着初始化程序列表。

例如,假设您希望定义一个元素1、2、3、4、5的数组。

你可以写

代码语言:javascript
复制
int a[5];

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

但是,C++允许在定义数组时分配数组的元素。对应的记录将显示

代码语言:javascript
复制
int a[5] = { 1, 2, 3, 4, 5 };

如果存在小于数组大小的初始化器,则其余元素将由零初始化。例如

代码语言:javascript
复制
int a[5] = { 1, 2 };

在这种情况下,a将等于tp 1,a1将等于2,而所有其他元素都将等于0。

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

代码语言:javascript
复制
int a[] = { 1, 2, 3, 4, 5 };

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

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

代码语言:javascript
复制
int a[5] = {};

等于

代码语言:javascript
复制
int a[5] = { 0 };

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

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

int x={ 10 };

对于标量对象,唯一的区别是只能指定一个初始化程序。您甚至可以在没有赋值运算符的情况下写作。

代码语言:javascript
复制
int x { 10 };

你也可以写

代码语言:javascript
复制
int x {};

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

票数 13
EN

Stack Overflow用户

发布于 2014-04-16 21:58:22

代码语言:javascript
复制
int Array[26]= {0};

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

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

代码语言:javascript
复制
Note: int Array[26]= {1}; will initialize first element to 1 and others to 0. 
票数 2
EN

Stack Overflow用户

发布于 2014-04-16 21:57:11

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23120856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档