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初始化的奇怪组件

慕桂英4014372

实现取决于编译器开发人员。如果您的问题是“这种声明会发生什么” - 编译器会将第一个数组元素设置为您提供的值(0),其他所有数组元素将设置为零,因为它是省略的数组元素的默认值。
打开App,查看更多内容
随时随地看视频慕课网APP