Основы программирования на языке Си. Кучин Н.В - 59 стр.

UptoLike

Составители: 

59
у автоматических. Значение статических переменных сохраняется от
одного вызова функции до другого. Локальные статические пере-
менные инициализируются нулем, если не указан другой инициали-
затор. При этом описание с инициализацией static int count=12; вы-
зывает однократную инициализацию переменной count при выделе-
нии для нее места. При последующих вызовах функции, в которой
описана эта переменная, инициализации не происходит. Это позво-
ляет использовать такую переменную для организации счетчика ко-
личества вызовов функции.
# include < stdio.h >
void trystat(void);
/* Пример 37 */
main(void)
{
int i;
for ( i=1; i<=3; i++)
{
printf(“ вызов - %d\n”,i);
trystat();
printf(“ вызов - %d\n”,i);
trystat();
}
}
void trystat(void)
{
int aut_l=1;
static int stat_l=1;
printf(“aut_l = %d stat_l = %d\n”,aut_l++,stat_l++);
}
Можно описать также глобальную статическую переменную, т. е.
описать переменную типа static вне любой функции. Отличие внешней
переменной от внешней статической переменной состоит в том, что
внешняя переменная может использоваться функциями в любом файле,
а внешняя статическая переменная может использоваться только функ-
циями того файла, где она описана, причем только после ее определе-
ния. Все глобальные переменные, как статические так и нестатические,
инициализируются нулем, если в программе не предусмотрено другой