ホームページ  >  記事  >  バックエンド開発  >  関数レベルの静的変数は、グローバル変数やローカル変数と比較して、割り当てと初期化においてどのように異なりますか?

関数レベルの静的変数は、グローバル変数やローカル変数と比較して、割り当てと初期化においてどのように異なりますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 10:25:02162ブラウズ

How Do Function-Level Static Variables Differ in Allocation and Initialization Compared to Global and Local Variables?

関数レベルの静的変数の割り当てと初期化: 詳細

グローバル変数は通常、プログラムの開始時に割り当てられ初期化されますが、割り当て

関数レベルの静的変数が割り当てられるとき

グローバル変数とは異なり、関数レベルの静的変数は関数が最初に入力されたときに割り当てられます。これは、関数が呼び出されるたびに行われるローカル変数の割り当てとは対照的です。

関数レベルの静的変数が初期化されるとき

関数の初期化-level 静的変数は、最初に関数に入ったときに 1 回だけ発生します。これは、static キーワードにより、複数の関数呼び出しにわたって変数の値が確実に保持されるためです。

明確性の例

次のコード スニペットを考えてみましょう:

void doSomething() {
  static bool globalish = true;
  // ...
}

プログラムの実行が初めて doSomething 関数に到達すると、グローバル変数が関数のスタック フレームに割り当てられます。次に、true への初期化が行われます。 doSomething 関数への後続の呼び出しでは、グローバル変数はすでに割り当てられて初期化されており、その値は保持されます。

結論

要約すると、関数レベル静的変数は、関数が最初に入ったときに割り当てられ、最初のエントリ中に 1 回だけ初期化されます。この動作はグローバル変数ともローカル変数とも異なり、関数内で永続的なデータを維持するためのユニークで便利なメカニズムを提供します。

以上が関数レベルの静的変数は、グローバル変数やローカル変数と比較して、割り当てと初期化においてどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。