我知道全局变量或静态都是在C中自动初始化为零。但是,我不确定是否只有一个或者只有一个被初始化。 请注意,我不谈论在函数中定义但在.c文件中全局定义的变量。
那么以下哪个变量会自动初始化为零?
static struct mystruct var1;
struct mystruct var2;
static struct { int x; int y; } var3;
答案 0 :(得分:6)
答案 1 :(得分:1)
我在codepad
中运行了以下代码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。