2

重複の可能性:
C での静的変数の初期化

C では、グローバル変数または静的変数のいずれかが自動的にゼロで初期化されることを知っています。しかし、それらの両方が初期化されるのか、それとも 1 つだけが初期化されるのかはわかりません。関数で定義された変数についてではなく、.c ファイルでグローバルに定義されていることに注意してください。

次の変数のうち、自動的にゼロで初期化されるのはどれですか?

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

2 に答える 2

6

C よくある質問.

于 2010-12-09T13:19:47.867 に答える
1

コードパッドで次のコードを実行しました

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.

于 2010-12-09T13:33:04.017 に答える