宣言したら
static int a ;// globally and
static int a ; // locally in one function
これで、.. のインスタンスが 2 つになりました。
すべての静的変数がデータ セグメントに入ることは知っていますが、データ セグメント内でどれがローカルで、どれがグローバルであるかはどのように区別されますか??
宣言したら
static int a ;// globally and
static int a ; // locally in one function
これで、.. のインスタンスが 2 つになりました。
すべての静的変数がデータ セグメントに入ることは知っていますが、データ セグメント内でどれがローカルで、どれがグローバルであるかはどのように区別されますか??
実際にはさらに先に進むことができます: 宣言することができます
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 つの個別の静的変数があります。正しいストレージが各変数参照に関連付けられるように調整するのは、コンパイラとリンカーの仕事です。