c - 变量的默认状态是什么?

标签 c memory initialization

当 C 程序启动并将变量分配给内存位置时,C 标准是否说明该值是否已初始化?

// global variables
int a;
int b = 0;
static int c;

在上面的代码中,'b'将被初始化为0。'a'的初始值是多少? “c”对这个模块来说是静态的,有什么不同吗?

最佳答案

由于您特别提到了global变量:在全局变量的情况下,无论它们是否被声明为static,它们都将被初始化为0。

Local 另一方面,变量将是未定义(除非它们被声明为static,在这种情况下它们也将被初始化为 0 ——感谢 Tyler McHenry)。换句话说,这意味着您不能依赖它们包含任何特定的东西——它们将只包含该位置内存中已经存在的任何随机垃圾,这可能因运行而异。

关于c - 变量的默认状态是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006635/

相关文章:

c++ - 堆分配变量的结构成员对齐

C89 - 使用灵活的字符数组和原型(prototype)初始化结构

c++ - 如何在 C++ 中初始化需要参数的结构数组

c++ - 预构造函数初始化

c++ - 在 C++11 中更改了默认初始化的含义?

c++ - 开源 C/C++ 3d 渲染器(支持 3ds max 模型)

c - 打印从文本文件中读取的每个单词的第 5 个字母

c++ - 双重自由或腐败(出)C++

c++ - 全局变量段错误

检查内存分配w/o valgrind