static の有効範囲2011年07月15日 15時30分49秒

複数の static 変数を関数内で使うのは滅多にない。久し振りに使うと、

int value, *ptr = &value;

の様に記述できるポインタ型と時折混乱する。

そこで、点検。


% cat static.c 
#include <stdio.h>

void p()
{
    static int a = 0, b = 0;
    int c = 0;
    printf("a=%d, b=%d c=%d\n", a++, b++, c++);
}

int main()
{
    p();
    p();
}
% CC static.c
% ./a.out 
a=0, b=0 c=0
a=1, b=1 c=0

同じ行に書かれた変数は全て static として機能している。