ホームページ  >  記事  >  バックエンド開発  >  C の関数レベルの静的変数はいつ、どのように割り当てられ、初期化されますか?

C の関数レベルの静的変数はいつ、どのように割り当てられ、初期化されますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-18 02:12:02182ブラウズ

When and How Are Function-Level Static Variables in C   Allocated and Initialized?

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

C の関数レベルの静的変数は、存続期間全体にわたって保持されるデータの一種です。プログラムの。グローバル変数とは異なり、グローバル変数はグローバル スコープでは宣言されず、関数のスコープ内で宣言されます。このため、これらの変数がいつ割り当てられ初期化されるかについて疑問が生じます。

プログラムの開始時に割り当てられ初期化されるグローバルに宣言された変数とは対照的に、関数レベルの静的変数は最初の呼び出し時に割り当てられ、初期化されます。それらが定義されている関数に。これは、提供されているコード例で明らかです。

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

静的変数 globalish は、関数 doSomething の最初の呼び出し時に初期化されます。それ以前は、その値は未定義です。この結果は、さまざまなスコープ内でインスタンス化されたオブジェクトの作成と破棄に関連するイベントを出力するテスト プログラムを通じて確認されました。

この動作は、静的変数がメモリの静的領域に格納されているという事実に起因します。同じ関数へのすべての呼び出し間で共有されます。したがって、関数内で明示的に変更しない限り、初期値は呼び出し間で永続的なままになります。

以上がC の関数レベルの静的変数はいつ、どのように割り当てられ、初期化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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