gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:31:58 26 4
gpt4 key购买 nike

编译器如何填充char array[100] = {0};中的值?它背后的魔力是什么?

我想知道编译器内部是如何初始化的。

最佳答案

这不是魔法。

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

此代码在 C++ 中的行为在 C++ 规范 (online draft of C++ spec) 的第 8.5.1.7 节中进行了描述:编译器聚合初始化没有指定值的元素。

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

char array[100] = {};

至于当你这样做时编译器可能会生成什么样的代码,看看这个问题:Strange assembly from array 0-initialization

关于c++ - array[100] = {0} 如何将整个数组设置为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/629017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com