質問

可能な複製:
Cプログラムでは「静的」とはどういう意味ですか?

何をしますか static cのキーワードの平均?

ANSI-Cを使用しています。いくつかのコードの例で見たことがあります、彼らは static 変数の前と関数の前のキーワード。変数で使用する場合の目的は何ですか?そして、関数で使用する場合の目的は何ですか?

役に立ちましたか?

解決

簡単な答えとして、2つの使用法があります static 変数を定義するときのキーワード:

1-ファイルの範囲で定義されている変数 static キーワード、 すなわち 定義された外部関数は、そのファイル内でのみ表示されます。他のファイルからそれらにアクセスしようとすると、リンク時に未解決のシンボルが得られます。

2-次のように定義されています static 関数内のブロック内は、同じコードブロックの異なる呼び出しにわたって持続または「生き残る」ことができます。それらが初期化されていると定義されている場合、それらは一度だけ初期化されます。 static 通常、変数は初期化されることが保証されています 0 デフォルトで。

他のヒント

static 関数の本体内で、IEは変数ストレージ分類器として使用されます。その変数は関数呼び出し間の値を保持するようにします。関数内の静的変数は、その関数にのみ見えるグローバル変数であると言うことができます。のこの使用 static 常にスレッドで使用される関数を作成します 安全でない あなたはそれを避けるべきです。

他のユースケースは使用しています static グローバル範囲では、グローバル変数と関数の場合:静的関数とグローバル変数はコンパイルユニットにローカルです。つまり、コンパイルされたバイナリオブジェクトのエクスポートテーブルに表示されません。したがって、彼らは名前空間を汚染しません。すべての機能とグローバル変数を静的に宣言すると、問題のコンパイルユニット(すなわちcファイル)の外側からアクセスできないと宣言することは良い考えです!静的変数をヘッダーファイルに配置してはならないことに注意してください(私は非常にまれな特別なケースを除く)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top