LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Да, правильно. Инициализация static происходит один раз. Но и дальнейшие изменения сохраняются между вызовами:

#include <stdio.h>

void
func(void)
{
        static int a = 10;

        printf("%d\n", a);
        a += 10;
}

int
main()
{
        func();
        func();
        func();

        return 0;
}

Одним словом это такая изощрённая глобальная переменная. И ведёт она себя так же.

Исправление beastie, :

Да, правильно. Инициализация static происходит один раз. Но и дальнейшие изменения сохраняются между вызовами:

#include <stdio.h>

void
func(void)
{
        static int a = 10;

        printf("%d\n", a);
        a += 10;
}

int
main()
{
        func();
        func();
        func();

        return 0;
}

Исходная версия beastie, :

Да, правильно. Инициализация static происходит один раз. Но и дальнейшие изменения сохраняются между вызовами.