可能性の重複:
What does “static” mean in a C program?何をANSI-Cで静的平均
static
キーワードは、Cで何を意味するのでしょうか?
私はANSI-Cを使用しています。いくつかのコード例では、変数の前と関数の前にstatic
というキーワードを使用しています。変数を使用する場合の目的は何ですか?そして、関数を使用する場合の目的は何ですか?
可能性の重複:
What does “static” mean in a C program?何をANSI-Cで静的平均
static
キーワードは、Cで何を意味するのでしょうか?
私はANSI-Cを使用しています。いくつかのコード例では、変数の前と関数の前にstatic
というキーワードを使用しています。変数を使用する場合の目的は何ですか?そして、関数を使用する場合の目的は何ですか?
がある:static
キーワードでファイルスコープで定義されて
の1-変数、すなわち定義された外部の機能はそれだけで内部に表示されますファイル。他のファイルからアクセスしようとすると、リンク時に未解決のシンボルが表示されます。
2つの関数内のブロック内にあるstatic
として定義された変数は、同じコードブロックのさまざまな呼び出しで存続します。それらが初期化されて定義されている場合、それらは一度だけ初期化されます。 static
変数は、通常、デフォルトで0
に初期化されることが保証されています。
1:staticは関数にも適用でき、外部に隠蔽することもできます。 – datenwolf
それはこの質問の他の化身で言われましたが、Googleから来る人のために厳密に言えば1はファイルではなくコンパイル単位に当てはまります。 – Jared
@Roux hass: "定義されていれば初期化されている"とはどういう意味ですか?それらが定義されたときにゼロ以外の値で初期化されていれば? – moonman239
static
変数の記憶域分類子として使用される変数は、関数呼び出し間で値を保持する変数です。関数内の静的変数は、その関数だけが見ることができるグローバル変数です。このようにstatic
を使用すると、スレッド内で使用されている関数は常にで安全になりません。は避けるべきです。
他の使用例はグローバルスコープ、つまりグローバル変数と関数で使用しています。静的関数とグローバル変数はコンパイル単位に対してローカルです。つまり、コンパイルされたバイナリのエクスポートテーブルには表示されません。オブジェクト。したがって、彼らは名前空間を汚染しません。問題のコンパイルユニット(すなわちCファイル)の外部からアクセスできない静的なすべての関数とグローバル変数を宣言するのは良い考えです!静的変数をヘッダファイルに入れてはならないことに注意してください(非常にまれな特殊ケースを除いて)。変数を定義するときにだけ簡単な答えとして、static
キーワードのための2つの用途は
私はしましたが、正確な目的を理解することは困難です。私は変数を使うことについてほとんど理解できませんでした。関数と一緒に使う? – Sency
これを見つけましたか?http://stackoverflow.com/questions/572547/what-does-static-mean-in-ac-program –
...またはこれ:http://stackoverflow.com/questions/943280/ c-static in-c-static in-c –