Latest web development tutorials

Cストレージクラス

ストレージクラス定義のCプログラム変数/範囲(可視性)機能とライフサイクル。 彼らはタイプを変更する前に、これらの指定子を配置します。 以下に示すプログラムで使用可能なストレージクラスC以下のとおりです。

  • オート
  • 登録
  • 静的
  • extern

自動ストレージクラス

自動ストレージ・クラスは、すべてのローカル変数のデフォルトのストレージクラスです。

{
   int mount;
   auto int month;
}

上記の例では、すなわち自動ローカル変数のみを変更し、自動関数内でのみ使用することができ、同じストレージクラスに2つの変数を定義します。

ストレージクラスを登録

登録ストレージクラスではなく、ローカル変数内のRAMのレジスタに格納されている定義するために使用されます。これは、変数の最大サイズは、レジスタ(通常はワード)の大きさに等しく、単項 '&'演算子(それは記憶場所を有していないため)、それに適用することができないことを意味します。

{
   register int  miles;
}

唯一のカウンタなどの変数への迅速なアクセスのための登録が必要です。 また、「レジスタ」の定義は、その変数がレジスタに格納されるわけではありません、それは変数は、ハードウェアおよび実装の制約に応じて、レジスタに格納されてもよいことを意味することに留意すべきです。

静的ストレージクラス

静的記憶域クラスはそれをあなたがスコープの外に出ると、作成および破棄するたびに入力する必要がなく、プログラムのライフサイクル内のローカル変数の存在を保持するようにコンパイラに指示します。したがって、静的なローカル変数の使用は、関数呼び出しの間に、ローカル変数の値を維持するように改変することができます。

static修飾子は、グローバル変数に適用することができます。 静的なグローバル変数を変更した場合、変数は、そのファイル内のステートメントの範囲を制限します。

C言語でのプログラミングは、クラスの静的データメンバで使用する場合、すべてのオブジェクトは、メンバーが共有されているクラスの一つのコピーのみになります。

#include <stdio.h>
 
/* 函数声明 */
void func(void);
 
static int count = 5; /* 全局变量 */
 
main()
{
   while(count--)
   {
      func();
   }
   return 0;
}
/* 函数定义 */
void func( void )
{
   static int i = 5; /* 局部静态变量 */
   i++;

   printf("i is %d and count is %d\n", i, count);
}

私は関数とグローバル変数を使用していたので、たぶん、あなたはまだ、このインスタンスを理解することはできません、これら二つの概念は、これまで説明できません。 あなたは完全には理解していない場合でも、それは、我々が詳細に説明する後続の章を重要ではありません。 上記のコードはコンパイルされ、実行されると、次の結果を生成します。

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

extern記憶クラス

extern記憶クラスは、グローバル変数への参照を提供するために使用され、すべてのプログラムファイルのグローバル変数が表示されます。あなたは変数を初期化することはできません」のextern」を使用すると、変数名は、以前に定義された保管場所を指します。

あなたが複数の文書を持っているし、他のドキュメントで使用できるグローバル変数や関数を定義するときは、変数や関数定義された参照を取得するために、他のファイル内でexternを使用することができます 。 externのは、別のファイル内のグローバル変数や関数を宣言するために使用され、理解することができます。

2以上のファイルがある場合はextern修飾子は、通常使用されている次のように、時間の同じグローバル変数や関数を共有します:

最初のファイル:main.cの

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main()
{
   count = 5;
   write_extern();
}

第二のファイル:support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void)
{
   printf("count is %d\n", count);
}

ここで、第2のファイルのexternキーワードは、ファイルで定義されている最初の文でカウントするために使用されるmain.cを ここでは、次のように両方のファイルをコンパイルします。

 $gcc main.c support.c

これは、プログラムが実行されると、それは次のような結果が生成され、a.outの実行可能プログラムを生成します。

5