Cprogramming-c-storage-classes
C-ストレージクラス
ストレージクラスは、Cプログラム内の変数や関数の有効範囲(可視性)と寿命を定義します。 変更するタイプに先行します。 Cプログラムには4つの異なるストレージクラスがあります-
- auto
- 登録
- 静的
- 外面
自動ストレージクラス
上記の例では、同じストレージクラスで2つの変数を定義しています。 「auto」は、関数、つまりローカル変数内でのみ使用できます。
レジスタストレージクラス
レジスタは、カウンタなどの迅速なアクセスを必要とする変数にのみ使用する必要があります。 また、「レジスタ」を定義しても、変数がレジスタに格納されるわけではないことに注意してください。 これは、ハードウェアと実装の制限に応じて、レジスタに格納される可能性があることを意味します。
静的ストレージクラス
static修飾子は、グローバル変数にも適用できます。 これが行われると、その変数のスコープは、それが宣言されているファイルに制限されます。
Cプログラミングでは、 static がグローバル変数で使用されると、そのメンバーの1つのコピーのみがそのクラスのすべてのオブジェクトで共有されます。
上記のコードをコンパイルして実行すると、次の結果が生成されます-
外部ストレージクラス
複数のファイルがあり、他のファイルでも使用されるグローバル変数または関数を定義すると、別のファイルで_extern_が使用され、定義された変数または関数の参照が提供されます。 理解のためだけに、_extern_は別のファイルでグローバル変数または関数を宣言するために使用されます。
extern修飾子は、以下で説明するように、同じグローバル変数または関数を共有する2つ以上のファイルがある場合に最も一般的に使用されます。
- 最初のファイル:main.c *
ここで、_extern_は、2番目のファイルで_count_を宣言するために使用されています。最初のファイルmain.cで定義されているためです。 今、次のようにこれらの2つのファイルをコンパイルします-
実行可能プログラム a.out が生成されます。 このプログラムが実行されると、次の結果が生成されます-