ホームページ  >  記事  >  バックエンド開発  >  C言語のさまざまなストレージクラス

C言語のさまざまなストレージクラス

PHPz
PHPz転載
2023-09-15 11:45:061222ブラウズ

C言語のさまざまなストレージクラス

質問

C 言語のさまざまなストレージ クラスは何ですか?それらをプログラムで解釈します。

解決策

ストレージ クラスは、C プログラム内に存在する変数または関数のスコープとライフサイクルとして定義されます。

ストレージ クラス

C 言語のストレージ クラスは次のとおりです。

  • auto
  • extern
  • static
  • register

自動変数/ローカル変数

  • キーワード - auto
  • はローカル変数とも呼ばれます
  • スコープ -
    • ローカル変数のスコープは、ローカル変数が宣言されているブロックに制限されます。

    • これらの変数はブロック内で宣言されます。

  • デフォルト値 - ガベージ値

デモ

#include<stdio.h>
void 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

グローバル変数/外部変数

  • キーワード - extern
  • これらの変数はブロックの外で宣言されているため、グローバル変数は

  • #スコープ とも呼ばれます - グローバル変数のスコープはプログラム全体で使用できます。

  • デフォルト - ゼロ

ライブデモンストレーション

#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);
}

出力

31

static 変数

  • Keyword - static
  • Scope - 静的スコープ変数の利点は、プログラム全体で使用できることです。また、関数呼び出し間でその値を保持します。
  • 静的変数は 1 回だけ初期化されます。
  • デフォルト値 - ゼロ
  • li>

Example

ライブデモンストレーション

#include<stdio.h>
main (){
   inc ();
   inc ();
   inc ();
}
inc (){
   static int i =1;
   printf ("%d", i);
   i++;
}

出力

1    2    3

レジスタ変数

  • キーワード − register
  • レジスタ変数の値は、メモリではなく CPU レジスタに格納されます。通常の変数はメモリに保存されます。

  • #レジスタは、CPU 内の一時記憶ユニットです。

デモンストレーション

#include<stdio.h>
main (){
   register int i;
   for (i=1; i< =5; i++)
      printf ("%d",i);
}

出力

1 2 3 4 5

以上がC言語のさまざまなストレージクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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