スポンサードリンク
HOME > C言語 > static - 静的変数

C言語 - static - 静的変数

変数に static 指定子を付ける事で、その変数は静的変数となります。



静的ローカル変数

通常のローカル変数は、その関数から抜けると全て失われてしまいますが、

static 付きの静的変数とすれば、関数から抜けても値が保持されます。

また、この変数は、プログラムが終了するまで保持されます。

#include <stdio.h>

void show(void);

void main(void) {
   show();
   show();
   show();

}

void show(void) {
   
static int count=0;

   count++;

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



このプログラムでは、関数 show 内で静的変数 count が使用されています。

1回目のshow() で静的変数 count の初期化が行われ、countが1ずつ増えます。

2回目以降のshow() では、初期化は行いませんが、

前回のcount の値が保持されています。

出力は、1 2 3 となります。



静的グローバル変数

通常のグローバル変数は、どこからでも使用する事ができますが、

static 付きの静的変数とすれば、そのファイル内からのみ使用できます

つまり、別ファイルからは、使用できません。(externを使用してもダメ)

この変数もローカル変数と同様に、 プログラムが終了するまで保持されます。

program1.c
#include <stdio.h>

void show(void);

// 静的グローバル変数(定義・実体)
static int idata;

void main(void) {
   show();

}


program2.c
#include <stdio.h>

void show(void);

// グローバル変数(宣言・参照)
extern int idata;

void show(void) {
   idata = 10;       // エラーとなる。
   printf("%d\n", idata);  // エラーとなる。
}



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved