変数の割り当てと初期化に関しては、変数のスコープに応じてタイミングが異なる場合があります。グローバル変数は、前述のように、プログラムの起動時に割り当てられます。しかし、関数内で宣言された静的変数はどうでしょうか?
指定されたシナリオでは、静的変数 globalish は、グローバル変数と同様に、プログラムの開始時に割り当てられます。これは、静的変数の寿命がローカル変数よりも長く、定義されている関数が終了しても値が維持されるためです。
静的変数の初期化タイミングは次のとおりです。物事が面白くなる場所。グローバル変数とは異なり、静的変数はプログラムの起動時に初期化されません。代わりに、それらが属する関数が最初に呼び出されたときにのみ初期化されます。この動作は、提供されているサンプル プログラムで明らかです。
void doSomething() { static bool globalish = true; // Initialization occurs here // ... }
この場合、globalish の初期化は、プログラムの開始時ではなく、 doSomething() が最初に実行されるときに行われます。この遅延初期化は「遅延初期化」と呼ばれます。
この遅延初期化の理由は、決して使用されない可能性のある静的変数の不必要な初期化を避けるためです。プログラムが静的変数を宣言する関数を呼び出さない場合は、初期化しないことでメモリと計算時間を節約します。
以上が静的変数はいつ初期化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。