ホームページ >バックエンド開発 >C++ >C のストレージ クラス

C のストレージ クラス

PHPz
PHPz転載
2023-09-11 18:33:03939ブラウズ

C のストレージ クラス

C 言語では、変数や関数の可視性やスコープなど、変数や関数の特性はストレージ クラスによって記述されます。

C 言語のストレージ クラスには、自動変数、外部変数、静的変数、レジスタ変数の 4 種類があります。

auto

Auto ストレージ クラスは、すべてのローカル変数のデフォルトのストレージ クラスです。関数が呼び出されたときに作成されます。関数の実行が完了すると、変数は自動的に破棄されます。

これらは関数のローカル変数であるため、ローカル変数とも呼ばれます。デフォルトでは、コンパイラはそれらにガベージ値を割り当てます。

スコープ - 自動変数は、ファンクション ブロックのローカル変数です。

デフォルト値 - ガベージ値はデフォルトの初期化値です。

ライフタイム - auto 変数のライフタイムは、それが定義されているブロックによって制限されます。

これは C 言語の auto 変数の例です。

Example

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

#include <stdio.h>
int main() {
   auto int a = 28;
   int b = 8;
   printf("The value of auto variable : %d</p><p>", a);
   printf("The sun of auto variable & integer variable : %d", (a+b));
   return 0;
}

Output

The value of auto variable : 28
The sun of auto variable & integer variable : 36

extern

外部変数はグローバル変数とも呼ばれます。これらの変数は関数の外部で定義されます。これらの変数は、関数の実行全体を通じてグローバルに使用できます。グローバル変数の値は関数を通じて変更できます。

スコープ - これらはどの関数にもバインドされません。これらはプログラム内のどこにでも、つまりグローバルに存在します。

デフォルト値 - グローバル変数のデフォルトの初期化値は 0 です。

ライフサイクル - > プログラムの実行が終了するまで。

これは C 言語の extern 変数の例です。

Example

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

#include <stdio.h>
extern int x = 32;
int b = 8;
int main() {
   auto int a = 28;
   extern int b;
   printf("The value of auto variable : %d</p><p>", a);
   printf("The value of extern variables x and b : %d,%d</p><p>",x,b);
   x = 15;
   printf("The value of modified extern variable x : %d</p><p>",x);
   return 0;
}

Output

The value of auto variable : 28
The value of extern variables x and b : 32,8
The value of modified extern variable x : 15

static

静的変数は 1 回だけ初期化されます。コンパイラは、プログラムが終了するまでこの変数を保持します。静的変数は関数の内部または外部で定義できます。

スコープ - これらはブロックのローカル変数です。

デフォルト値 - > デフォルトの初期化値はゼロです。

ライフサイクル - プログラムの実行が終了するまで。

これは C 言語の静的変数の例です。

Example

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

#include <stdio.h>
int main() {
   auto int a = -28;
   static int b = 8;
   printf("The value of auto variable : %d</p><p>", a);
   printf("The value of static variable b : %d</p><p>",b);
   if(a!=0)
   printf("The sum of static variable and auto variable : %d</p><p>",(b+a));
   return 0;
}

出力

The value of auto variable : -28
The value of static variable b : 8
The sum of static variable and auto variable : -20

register

レジスタ変数は、メモリではなく CPU レジスタに変数を格納するようにコンパイラに指示します。頻繁に使用される変数はレジスタに保存されるため、より高速にアクセスできます。これらの変数のアドレスを取得することはできません。

スコープ - 関数内に限定されます。

デフォルト値 - デフォルトの初期化値はガベージです。

ライフサイクル - それを定義するコード ブロックの実行が終了する前。

C 言語のレジスタ変数の例を次に示します。

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

#include <stdio.h>
int main() {
   register char x = &#39;S&#39;;
   register int a = 10;
   auto int b = 8;
   printf("The value of register variable b : %c</p><p>",x);
   printf("The sum of auto and register variable : %d",(a+b));
   return 0;
}

出力

The value of register variable b : S
The sum of auto and register variable : 18

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

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