Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で変数の寿命を説明します。


ストレージクラスは、変数のスコープ、有効期間、およびバインディングを指定します。

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

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

ストレージクラスは次の要素を教えてくれます

  • 変数はどこに(メモリまたはCPUレジスタに)格納されますか?
  • 何も初期化されていない場合、変数の初期値はどうなりますか?
  • 変数のスコープ(アクセスできる場所)は何ですか?
  • 変数の寿命はどれくらいですか?

生涯

変数の有効期間は、コンピューターがその変数にメモリを割り当てる期間(メモリの割り当てと割り当て解除の間の期間)を定義します。

C言語では、変数は自動、静的、または動的な有効期間を持つことができます。

  • 自動 −自動有効期間を持つ変数が作成されます。毎回、彼らの宣言に遭遇し、破壊されます。また、それらのブロックは終了します。
  • 静的 −宣言が最初に実行されるときに変数が作成されます。実行が停止/終了すると破棄されます。
  • 動的 −変数memoryは、メモリ管理機能を介して割り当ておよび割り当て解除されます。

ストレージクラス

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

ストレージクラス ストレージエリア デフォルトの初期値 生涯 スコープ キーワード
自動 メモリ 制御がブロックのままになるまで 制御がブロックのままになるまで ローカル 自動
登録 CPUレジスタ ガベージ値 制御がブロックのままになるまで ローカル 登録
静的 メモリ ゼロ 関数呼び出し間の値 ローカル 静的
外部 メモリ ガベージ値 プログラム実行全体 グローバル 外部

以下は自動ストレージクラスのCプログラムです-

#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

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

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

出力

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

3 1

  1. ネストされたif-elseステートメントをC言語で説明する

    「ネストされたif」は、if(または)elseのいずれかのオブジェクトであるifステートメントです。 「if」は別のif(または)elseの中に配置されます。 構文 以下の構文を参照してください- if (condition1){    if (condition2)       stmt1;    else       stmt2; } else{    if (condition3)       stmt3;    el

  2. C言語で「simpleif」ステートメントを説明する

    「if」キーワードは、論理条件が真の場合に一連のステートメントを実行するために使用されます。 構文 構文は以下のとおりです- if (condition){    Statement (s) } 「simpleif」ステートメントの機能 ifブロック内のステートメントは、条件がtrueの場合にのみ実行され、それ以外の場合は実行されません。 条件がtrueのときに1つのステートメントのみを実行する場合は、中括弧({})を削除できます。一般に、実行するステートメントが1つしかない場合でも、中括弧は省略しないでください。 条件がtrueの場合、複数のステ