为了账号安全,请及时绑定邮箱和手机立即绑定

array [100] = {0}如何将整个数组设置为0?

array [100] = {0}如何将整个数组设置为0?

C++ C
慕仙森 2019-08-31 14:39:21
编译器如何填充值char array[100] = {0};?它背后的魔力是什么?我想知道内部编译器如何初始化。
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

这不是魔术。


C规范的第6.7.8.21节(C规范的在线草案)中描述了C中此代码的行为:对于没有指定值的元素,编译器将指针初始化为NULL,将算术类型初始化为零(并递归地将其应用于聚合)。


C ++中的代码行为在C ++规范的8.5.1.7节(C ++规范的在线草案)中描述:编译器聚合初始化没有指定值的元素。


另请注意,在C ++(但不是C)中,您可以使用空的初始化列表,从而使编译器聚合初始化数组的所有元素:


char array[100] = {};

至于编译器在执行此操作时可能生成的代码类型,请查看以下问题:数组0初始化的奇怪组件


查看完整回答
反对 回复 2019-08-31
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

实现取决于编译器开发人员。

如果您的问题是“这种声明会发生什么” - 编译器会将第一个数组元素设置为您提供的值(0),其他所有数组元素将设置为零,因为它是省略的数组元素的默认值。


查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 2076 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信