Static storage duration
Объект, идентификатор которого объявлен без спецификатора класса хранения _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