32

C ++のグローバル識別子staticと非グローバル識別子の違いは何ですか?static

4

4 に答える 4

35

Static は、変数のスコープを同じ翻訳単位に制限します。静的グローバル変数には内部リンケージ
があります。非静的グローバル変数に 外部リンケージがあります。

よく読んでください:
外部リンケージと内部リンケージとは何ですか?

于 2012-10-31T16:05:29.703 に答える
11

グローバル変数は、変数が含まれる翻訳単位static(つまり、ソース ファイル)でのみ使用できます。非静的グローバル変数は、他のソース ファイルから参照できます。

于 2012-10-31T16:05:40.503 に答える
3

何が違うのかわからない場合、正しい答えはおそらくあなたをさらに混乱させるでしょう。つまり、staticクラスの は、ファイル スコープで静的に関連付けられません。クラスの静的変数は、基本的に通常の変数と同じですが、クラス名を前に付けて参照する必要があります。ファイル スコープの静的変数は、ファイルに対してのみローカルな通常の変数です。その意味を理解するために、同じ名前の 2 つの変数を 1 つのプロジェクトに追加してみてください。同一のシンボルが複数あるため、リンカー エラーが発生します。シンボルを静的にすることで、問題を回避し、ファイルの外部から変数の名前にアクセスできなくなります。

于 2012-10-31T22:32:18.827 に答える
3

グローバル非静的変数は他のファイルからアクセスできますが、静的グローバル変数はそうではありません

于 2012-10-31T16:11:33.697 に答える