TOP - C言語 - 宣言 - 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
-----------


Copyright(C) 2006-2012 CLAYPOT. All Rights Reserved.