C言語φ(..)メモメモ

c言語絶賛忘れ中なのでメモ。

static

関数内で変数に static を付けると、その関数が終了しても消えずに値が残る。

#include <stdio.h>

int sum(int a, int b);

int main(void) {
    int i, x, y;
    x = 1;
    y = 2;

    for(i = 0; i < 10; i++) {
        printf("%d 回目 = %d\n", i, test(x, y));
    }

    return 0;
}

int sum(int a, int b) {
    static int sum = 0;
    
    sum += a + b;
    return sum;
}

コンパイル & 実行すると、

 % bin/test
 0 回目 = 3
 1 回目 = 6
 2 回目 = 9
 3 回目 = 12
 4 回目 = 15
 5 回目 = 18
 6 回目 = 21
 7 回目 = 24
 8 回目 = 27
 9 回目 = 30

関数が終了しても、値は保持され、 sum 関数が呼び出されるごとに値が増えている。

また、グローバル変数や関数自体に static を付けると、その変数や関数を外部ファイルから呼び出せなくなる。

参考にしたページ

C言語のstatic指定子について