Статические здесь означает, что переменные остаются в работе. Они имеют такую же область действия, как автоматические переменные, но они не исчезают, когда содержащая их функция закончит свою работу. Компилятор хранит их значения от одного вызова функции до другого.
Пример:
/* Статическая переменная */ #include <stdio.h>
void man_woman( )
{
int man = 1;
static int woman = 1;
printf("man = %d and woman = %d\n",
man++, woman++);
}
void main(void)
{
int count;
for(count = 1;count <= 3; count ++)
{
printf("Count students %d:\n", count);
man_woman ( );
}
}
Результат работы программы
Функция man_woman увеличивает каждую переменную после печати ее значения. Работа этой программы дает следующие результаты:
Подсчет студентов 1:юношей = 1 и девушек = 1Подсчет студентов 2:юношей = 1 и девушек = 2Подсчет студентов 3:юношей = 1 и девушек = 3 Статическая переменная woman помнит, что ее значение было увеличено на 1, в то время как для переменной man начальное значение устанавливается каждый раз заново. Это указывает на разницу в инициализации: man инициализируется каждый раз, когда вызывается man_woman ( ), в то время как woman инициализируется только один раз при компиляции функции man_woman ( ).