Статическая продолжительность хранения
Объект, идентификатор которого объявлен без спецификатора класса хранения _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
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/static_storage_duration