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

C のストレージ クラス

PHPz
リリース: 2023-09-11 18:33:03
転載
1009 人が閲覧しました

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート