C静态变量和初始化

标签 c static initialization

如果我在这段代码中有一个全局静态变量 x

 #include <stdio.h>
 #include <stdio.h>

 static int x;

 int main(void)
 {

 DO SOMETHING WITH x HERE

 x++;

 }

如果我选择先将 x 初始化为一个值会有什么不同

static int x = 0;  

在输入“main”之前?

在我没有为 x 赋值的第一个例子中,编译器是否隐含地知道 x 将被设置为零,因为它是一个静态变量?我听说我们可以用静态变量来做到这一点。

非常感谢...

最佳答案

具有显式初始化的静态变量始终初始化为零(或空指针,具体取决于类型)。 C标准§6.7.8/10对此有描述。但是明确地将它设置为 0 可以帮助其他人无需对相同的问题感到疑惑:)。

关于C静态变量和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617196/

相关文章:

包含结构的 C union - 内存映射 - 编译器跳过一个字节?

c - 采用不同数据类型的多个元素的数组

c - 如何将结构与二维数组和动态内存分配一起使用

c# - 静态修饰符如何工作?

javascript - 使用 Flask 从目录中获取 leaflet.js 和 leaflet.css 时,传单 map 未出现

c - memcpy 将数组对象复制到 C 中的字符指针,反之亦然

java - 应用程序启动时预加载所有图像

c++ - 如何正确初始化不可默认构造的类成员?

c - 未提及的结构字段是否*总是*初始化为零(即当结构在堆栈上时)?

python - 创建一个独特的虚拟对象