void foo() {
static int x;
}
void bar() {
static int x;
}
int main() {
foo();
bar();
}
2127 次
6 に答える
20
彼らはそれぞれ自分のものだけを見ています。変数は、宣言されているスコープの外から「見る」ことはできません。
一方、これを行った場合:
static int x;
void foo() {
static int x;
}
int main() {
foo();
}
次にfoo()
、その local のみが表示されx
ます。グローバルx
はそれによって「隠されています」。ただし、一方を変更しても、他方の値には影響しません。
于 2010-11-05T16:58:57.927 に答える
6
変数は異なり、各関数には独自のスコープがあります。したがって、両方の変数はプロセスの存続期間中持続しますが、互いに干渉することはありません。
于 2010-11-05T16:59:31.937 に答える
3
これはまったく問題ありません。実際には、コンパイラの出力における変数の実際の名前は、 のようなものと考えることができますfunction_bar_x
。つまり、これらが衝突しないようにするのはコンパイラの責任です。
于 2010-11-05T16:59:13.263 に答える
2
何も起こりません。両方の変数には ri スコープがあり、呼び出しで呼び出す値を維持します
于 2010-11-05T16:59:52.143 に答える
1
2 つの静的変数は異なります。
于 2010-11-05T16:59:32.460 に答える