猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
array [100] = {0}如何将整个数组设置为0?
编译器如何填充值
char array[100] = {0};
?它背后的魔力是什么?
我想知道内部编译器如何初始化。
慕仙森
浏览 2077
回答 3
3回答
达令说
这不是魔术。C规范的第6.7.8.21节(C规范的在线草案)中描述了C中此代码的行为:对于没有指定值的元素,编译器将指针初始化为NULL,将算术类型初始化为零(并递归地将其应用于聚合)。C ++中的代码行为在C ++规范的8.5.1.7节(C ++规范的在线草案)中描述:编译器聚合初始化没有指定值的元素。另请注意,在C ++(但不是C)中,您可以使用空的初始化列表,从而使编译器聚合初始化数组的所有元素:char array[100] = {};至于编译器在执行此操作时可能生成的代码类型,请查看以下问题:数组0初始化的奇怪组件
0
0
0
慕桂英4014372
实现取决于编译器开发人员。如果您的问题是“这种声明会发生什么” - 编译器会将第一个数组元素设置为您提供的值(0),其他所有数组元素将设置为零,因为它是省略的数组元素的默认值。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
C
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续