带大括号的数组初始化:揭秘编译器的行为
编程中,用大括号给数组赋值,如 array[100] = {0},引发了有关如何在内部初始化值的问题。让我们深入研究一下这个符号背后的魔法。
魔法还是编译器逻辑?
与普遍看法相反,其中不涉及任何魔法。此代码的行为受编程语言规范控制:
C 规范(第 6.7.8.21 节): 对于未指定的数组元素,指针初始化为 NULL,算术类型(包括 char )设置为零。
C 规范(部分8.5.1.7): 未指定的数组元素是聚合初始化的。
C 中的空初始值设定项列表 : C 支持空初始值设定项列表,如 array[100] = {};,其中聚合-初始化数组的所有元素。
编译器生成代码: 通常,编译器会生成将数组的每个元素设置为指定值的代码。但是,根据编译器和优化设置,代码可能会有所不同。
要进一步了解编译器的行为,请参阅相关问题中为空初始值设定项列表生成的汇编代码:“Strange assembly from array 0 -初始化。”
以上是C 和 C 中如何用大括号初始化数组?的详细内容。更多信息请关注PHP中文网其他相关文章!