関数レベルの静的変数の割り当てと初期化: 詳細
グローバル変数は通常、プログラムの開始時に割り当てられ初期化されますが、割り当て関数レベルの静的変数の初期化は、より微妙な規則に従います。 pattern.
関数レベルの静的変数が割り当てられるとき
グローバル変数とは異なり、関数レベルの静的変数は関数が最初に入ったときに割り当てられます。これは、関数が呼び出されるたびに行われるローカル変数の割り当てとは対照的です。
関数レベルの静的変数が初期化されるとき
関数の初期化-level 静的変数は、最初に関数に入ったときに 1 回だけ発生します。これは、static キーワードにより、複数の関数呼び出しにわたって変数の値が確実に保持されるためです。
明確性の例
次のコード スニペットを考えてみましょう:
void doSomething() { static bool globalish = true; // ... }
プログラムの実行が初めて doSomething 関数に到達すると、グローバル変数が関数のスタックフレーム。次に、true への初期化が行われます。 doSomething 関数への後続の呼び出しでは、グローバル変数はすでに割り当てられて初期化されており、その値は保持されます。
結論
要約すると、関数レベル静的変数は、関数が最初に入ったときに割り当てられ、最初のエントリ中に 1 回だけ初期化されます。この動作はグローバル変数ともローカル変数とも異なり、関数内で永続的なデータを維持するためのユニークで便利なメカニズムを提供します。
以上が関数レベルの静的変数は、グローバル変数やローカル変数と比較して、割り当てと初期化においてどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。