staticをつけるとどんな感じになるかのイメージはわかりましたか?
#include <stdio.h> void testfunction( void )
{
int a = 0; /* 普通に宣言した場合の変数 */
static int b = 0; /* static をつけて静的変数として宣言したもの */a++;
b++;printf("a = %d , b = %d\n",a,b);
return;
}int main()
{
testfunction();
testfunction();
testfunction();return 0;
}実行結果
a = 1 , b = 1
a = 1 , b = 2
a = 1 , b = 3
static int b = 0;変数名の後についている「 = 0 」は、最初に一度だけ実行されます。つまり、静的変数の 初期値ですね。静的変数は外部変数と扱いが似ているので、初期値は0なのですが、例 え初期値が0でもわかりやすいように「 = 0 」を入れておいたほうが良いでしょう。
/* 例:呼び出すたびに0、1を交互 に返す関数 */
int alternatereturn( void )
{
static int data = 0;
int result = data;if( data == 0 ){
data = 1;
} else {
data = 0;
}return result;
}