可能重复:
C中静态变量的初始化
我知道全局变量或静态变量在 C 中都会自动初始化为零。但是,我不确定它们是否都被初始化或只有其中一个被初始化。请注意,我不是在谈论在函数中定义的变量,而是在 .c 文件中全局定义的变量。
那么以下哪些变量会自动初始化为零?
static struct mystruct var1;
struct mystruct var2;
static struct { int x; int y; } var3;
可能重复:
C中静态变量的初始化
我知道全局变量或静态变量在 C 中都会自动初始化为零。但是,我不确定它们是否都被初始化或只有其中一个被初始化。请注意,我不是在谈论在函数中定义的变量,而是在 .c 文件中全局定义的变量。
那么以下哪些变量会自动初始化为零?
static struct mystruct var1;
struct mystruct var2;
static struct { int x; int y; } var3;
我在键盘中运行了以下代码
struct mystruct { int a; };
static struct mystruct var1;
struct mystruct var2;
static struct { int x; int y; } var3;
#include <stdio.h>
void main()
{
int x;
printf("var1.a: %d\n", var1.a);
printf("var2.a: %d\n", var2.a);
printf("var3.x: %d\n", var3.x);
printf("var3.y: %d\n", var3.y);
printf("x: %d\n", x);
}
结果:
var1.a: 0
var2.a: 0
var3.x: 0
var3.y: 0
x: 1075105060
无论如何,我不喜欢对初始化做出假设,而是 YMMV。