在C中初始化静态变量

时间:2010-12-09 13:17:24

标签: c initialization global-variables static-variables

  

可能重复:
  The initialization of static variable in C

我知道全局变量或静态都是在C中自动初始化为零。但是,我不确定是否只有一个或者只有一个被初始化。 请注意,我谈论在函数中定义但在.c文件中全局定义的变量。

那么以下哪个变量会自动初始化为零?

static struct mystruct var1;
struct mystruct var2;
static struct { int x; int y; } var3;

2 个答案:

答案 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。