Namespaces
Variants

Static storage duration

From cppreference.net

Объект, идентификатор которого объявлен без спецификатора класса хранения _Thread_local , и либо с внешней или внутренней линковкой , либо со спецификатором класса хранения static , имеет статическую продолжительность хранения. Его время жизни охватывает всё выполнение программы, а хранимое значение инициализируется только один раз до запуска программы.

Примечания

Поскольку его сохраненное значение инициализируется только один раз, объект со статической продолжительностью хранения может профилировать вызовы функции.

Другое использование ключевого слова static — это область видимости файла .

Пример

#include <stdio.h>
void f (void)
{
    static int count = 0;   // static variable   
    int i = 0;              // automatic variable
    printf("%d %d\n", i++, count++);
}
int main(void)
{
    for (int ndx=0; ndx<10; ++ndx)
        f();
}

Вывод:

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9