Урок 11.4. Статические переменные

11.4. Статические переменные

Слово "статические" здесь означает, что переменные остаются в работе. Они имеют такую же область действия, как автоматические переменные, но они не исчезают, когда содержащая их функция закончит свою работу. Их значения сохраняются от одного вызова функции до другого. Описателем для них является слово static. Например, в следующей программе

 

void main()
{
  int count;
  for (count = 1; count <= 3; count++)
  trystat();
}
 
void trystat()
{
  int fade = 1;
  static int stat = 1;
  fade++; stat++;
}

функция trystat() вызывается трижды. При этом, значение статической переменной stat каждый раз увеличивается на единицу, в то время как для переменной fade начальное значение устанавливается каждый раз заново. Иными словами, переменная fade инициализируется каждый раз, когда вызывается trystat(), а переменная stat – только один раз при компиляции функции trystat(). Статическая переменная может быть внутренней или внешней. Внутренние статические переменные локальны по отношению к отдельной функции, они являются собственной, постоянной памятью для нее.

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

Функции обычно являются внешними объектами; их имена известны везде (они глобальные). Однако можно описать функцию как статическую: это приведет к тому, что ее имя будет не известно вне файла, где она описана.

 

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов