0

宣言したら

  static int a ;// globally and 
  static int a ; // locally in one function 

これで、.. のインスタンスが 2 つになりました。

すべての静的変数がデータ セグメントに入ることは知っていますが、データ セグメント内でどれがローカルで、どれがグローバルであるかはどのように区別されますか??

4

1 に答える 1

1

実際にはさらに先に進むことができます: 宣言することができます

static int a;

プログラムに貢献する2つ以上の別々のファイルのファイルスコープで。異なるスコープ内のそのような各宣言は、個別の変数を宣言します。したがって、与えられた

FC:

static int a;

int f() {
    static int a;
    return 0;
}

main.c

static int a;

int f(void);

int main() {
    return f();
}

a異なる場所で名前に関連付けられた 3 つの個別の静的変数があります。正しいストレージが各変数参照に関連付けられるように調整するのは、コンパイラとリンカーの仕事です。

于 2015-01-30T18:02:52.577 に答える