ホームページ  >  記事  >  バックエンド開発  >  C言語で変数のライフサイクルを説明する

C言語で変数のライフサイクルを説明する

WBOY
WBOY転載
2023-09-02 19:37:071557ブラウズ

C言語で変数のライフサイクルを説明する

ストレージ クラスは、変数のスコープ、ライフサイクル、バインドを指定します。

変数を完全に定義するには、その「型」だけでなく、そのストレージ クラスについても言及する必要があります。

変数名は、変数の値を格納するためにビットのセットが割り当てられるコンピュータ メモリ内の物理的な場所を識別します。

ストレージ クラスは次の要素を示します -

  • 変数はどこに格納されますか (メモリまたは CPU レジスタ内)?
  • 初期化がない場合、変数の初期値は何ですか?
  • 変数のスコープ(アクセスできる変数の範囲)とは何ですか?
  • 変数のライフサイクルとは何ですか?

ライフタイム

変数のライフタイムは、コンピューターがその変数にメモリを割り当てる期間 (メモリの割り当てから割り当て解除までの期間) を定義します。

C 言語では、変数に自動、静的、または動的ライフサイクルを持たせることができます。

  • 自動 - 自動ライフサイクルで変数を作成します。そのたびに、彼らのマニフェストは達成され、破壊されました。さらに、彼らのブロックも終了します。
  • static - 変数は、宣言が初めて実行されるときに作成されます。実行が停止/終了すると破棄されます。
  • 動的 - 変数メモリは、メモリ管理関数を通じて割り当ておよび解放されます。

ストレージ クラス

C 言語には 4 つのストレージ クラスがあります。

#レジスタ##ガベージ値##ローカルzeroガベージ値例次は、自動ストレージ クラスの C プログラムです。 tr> ライブ デモ
ストレージ クラス ストレージリージョン デフォルトの初期値 ライフサイクル スコープ キーワード
自動 メモリ コントロールがブロック内に残るまで コントロールがブロック内に残るまで ローカル 自動
#CPUレジスタ##制御がブロック内に残るまで #static memory
関数呼び出し間の値を登録します local static 外部 メモリ
プログラム全体の実行 グローバル 外部
#include<stdio.h>
main ( ){
   auto int i=1;{
      auto int i=2;{
         auto int i=3;
         printf ("%d",i)
      }
      printf("%d", i);
   }
   printf("%d", i);
}

出力

上記のプログラムを実行すると、次の出力が生成されます-

3 2 1

Example

以下は、外部ストレージ クラスの C プログラムです-

ライブデモ

#include<stdio.h>
extern int i =1; /* this &lsquo;i&rsquo; is available throughout program */
main ( ){
   int i = 3; /* this &lsquo;i&#39; available only in main */
   printf ("%d", i);
   fun ( );
}
fun ( ) {
   printf ("%d", i);
}

出力

上記のプログラムを実行すると、次の出力が生成されます -

3 1

以上がC言語で変数のライフサイクルを説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。