検索
  • サインイン
  • サインアップ
パスワードのリセットが成功しました

興味のあるプロジェクトをフォローし、それらに関する最新ニュースをチェックしてください

Cストレージクラス

コレクション 205
リーディング 91677
更新時間 2016-09-11

ストレージ クラスは、C プログラム内の変数/関数のスコープ (可視性) とライフサイクルを定義します。これらの指定子は、変更する型の前に配置されます。 C プログラムで使用できるストレージ クラスは以下のとおりです。

auto ストレージ クラス

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

{   int mount;   auto int month;}

上記の例では、同じストレージ クラスを持つ 2 つの変数を定義しています。Auto は関数内でのみ使用できます。つまり、auto はローカル変数のみを変更できます。

register ストレージ クラス

register ストレージ クラスは、RAM の代わりにレジスタに格納されるローカル変数を定義するために使用されます。これは、変数の最大サイズがレジスタのサイズ (通常はワード) に等しく、単項 '&' 演算子を変数に適用できないことを意味します (メモリ位置がないため)。

{   register int  miles;}

レジスタは、カウンターなど、すぐにアクセスする必要がある変数にのみ使用されます。 「レジスタ」の定義は、変数がレジスタに格納されることを意味するのではなく、ハードウェアと実装の制限に応じて、変数がレジスタに格納される可能性があることを意味することにも注意してください。

静的ストレージ クラス

static ストレージ クラスは、スコープに出入りするたびにローカル変数を作成して破棄することなく、プログラムの存続期間中ローカル変数を維持するようにコンパイラーに指示します。したがって、static を使用してローカル変数を変更すると、関数呼び出し間でその値が維持されます。

static 修飾子はグローバル変数にも適用できます。 static を使用してグローバル変数を変更する場合、変数のスコープはそれが宣言されているファイルに制限されます。

C プログラミングでは、static がクラス データ メンバーで使用されると、クラスのすべてのオブジェクトでメンバーのコピーが 1 つだけ共有されます。

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

この例はまだ理解できないかもしれません。なぜなら、私は関数とグローバル変数を使用しており、これら 2 つの概念についてはこれまで説明していないからです。今は完全には理解できていなくても、後続の章で詳しく説明しますので、問題ありません。上記のコードをコンパイルして実行すると、次の結果が生成されます。

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

extern ストレージ クラス

extern ストレージ クラスは、すべてのプログラム ファイルに表示されるグローバル変数への参照を提供するために使用されます。初期化できない変数に対して「extern」を使用すると、変数名は以前に定義された格納場所を指します。

複数のファイルがあり、他のファイルで使用できるグローバル変数または関数を定義する場合、他のファイルで e​​xtern を使用して、定義された変数または関数への参照を取得できます。 extern は、別のファイルでグローバル変数または関数を宣言するために使用されることが理解できます。

extern 修飾子は、通常、以下に示すように、同じグローバル変数または関数を共有する 2 つ以上のファイルがある場合に使用されます:

最初のファイル: main.c

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

2 番目のファイル: support.c

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

ここで、2 番目のファイルの extern キーワードは、最初のファイル main.c で既に定義されている count を宣言するために使用されます。ここで、これら 2 つのファイルを次のようにコンパイルします。

 $gcc main.c support.c

これにより、a.out 実行可能プログラムが生成され、プログラムが実行されると、次の結果が生成されます。

ホットAIツール
Undress AI Tool
Undress AI Tool

脱衣画像を無料で

AI Clothes Remover
AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undresser.AI Undress
Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

Stock Market GPT
Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

人気のツール
メモ帳++7.3.1
メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版
SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6
ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版
SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)