Last Update 2012/07/05
staticを付けて宣言を行うと、変数や関数の適用範囲を限定する事が可能です。
・外部変数(関数)の場合
変数(関数)がコンパイルされた同一ファイル内からのみ利用可能
・内部変数の場合
宣言された関数の内部からのみ利用可能
static宣言された変数の内容は永続的に保持される
static宣言された変数の内容は永続的に保持される
(例)
#include <stdio.h>
void test_func(int i)
{
static double test1;
if (i == 0)
{
test1 = 1.0;
}
test1 = test1 + 1.0;
printf("%3.1f\n", test1);
}
void test_func2(int i)
{
double test1;
if (i == 0)
{
test1 = 1.0;
}
test1 = test1 + 2.0;
printf("%3.1f\n", test1);
}
int main()
{
int i;
for (i=0; i<3; i++)
{
test_func(i);
test_func2(i);
printf("-----------\n");
}
return 0;
}
実行結果
2.0
3.0
-----------
3.0 <- static指定されているため値が保持されている。以降の実行も同様の結果となる。
2.0 <- static指定せず初期値指定されていないため値は不定(この場合は初期値が0.0となっていると考えられる)
-----------
4.0
2.0
-----------