Составители:
Рубрика:
86
кальные переменные, объявленные с ключевым словом static, известны только в
том блоке, в котором они определены. Но, в отличие от автоматических пере-
менных, локальные переменные static сохраняют свои значения в течение всего
времени выполнения программы. При каждом следующем обращении к этому
блоку локальные переменные содержат те значения, которые они имели при
предыдущем обращении.
Вернемся к уже рассмотренному выше примеру, но укажем для переменной i
статический класс:
{
static int i = 1;
...
i++;
...
}
Инициализация переменной i произойдет только один раз за время выполне-
ния программы. При первом обращении к этому блоку значение переменной i
будет равно 1. К концу выполнения блока ее значение станет равно 2. При
сле-
дующем обращении к блоку это значение сохранится и при окончании повтор-
ного выполнения блока i будет равно 3.
Таким образом, статическая переменная способна хранить информацию ме-
жду обращениями к блоку и, следовательно, может использоваться, например,
как счетчик числа обращений. Все числовые переменные статического класса
памяти принимают нулевые начальные значения, если
программист явно не
указал другие начальные значения. Статические переменные – указатели тоже
имеют нулевые начальные значения.
Спецификации класса памяти extern используются в программах с несколь-
кими файлами. Пусть, например, в модуле Unit1 или в файле Unit1.cpp объяв-
лена глобальная переменная int a = 5; .
Тогда, если в другом модуле Unit2 или в файле
Unit2.cpp объявлена гло-
бальная переменная extern int a;, то компилятор понимает, что речь идет об
одной и той же переменной. И оба модуля могут с ней работать. Для этого даже
нет необходимости связывать эти модули директивой #include, включающей в
модуль Unit1 заголовочный файл второго модуля.
Таким образом, область действия идентификатора – это часть
програм-
мы, в которой на идентификатор можно ссылаться. Например, на локальную пе-
ременную, объявленную в блоке, можно ссылаться только в этом блоке или в
блоке, вложенном в этот блок. Существует четыре области действия идентифи-
катора – функция, файл, блок и прототип функции.
Идентификатор, объявленный вне любой функции (на внешнем уровне),
имеет
область действия файл. Такой идентификатор известен всем функциям.
Страницы
- « первая
- ‹ предыдущая
- …
- 84
- 85
- 86
- 87
- 88
- …
- следующая ›
- последняя »
