Информатика. Программирование на C++. Мамонова Т.Е. - 23 стр.

UptoLike

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

Если переменная определена внутри блока, она называется локаль-
ной, область ее действия от точки описания до конца блока, включая
все вложенные блоки.
Если переменная определена вне любого блока, она называется гло-
бальной и областью ее действия считается файл, в котором она опреде-
лена, от точки описания до его конца.
Класс памяти определяет время жизни и область видимости про-
граммного объекта.
Областью видимости идентификатора называется часть текста
программы, из которой допустим обычный доступ к связанной с иден-
тификатором областью памяти. Чаще всего область видимости совпада-
ет с областью действия. Исключением является ситуация, когда во вло-
женном блоке описана переменная с таким же именем.
Время жизни может быть постоянным течение выполнения про-
граммы) и временным (в течение выполнения блока).
Для задания класса памяти используются следующие специфика-
торы:
auto автоматическая переменная. Память под нее в стеке выделя-
ется и при необходимости инициализируется каждый раз при выполне-
нии оператора, содержащего ее определение, и освобождается при вы-
ходе из блока, в котором она описана. Время ее жизни – локальное.
extern переменная определяется в другом месте программы. Ис-
пользуется для создания переменных, доступных во всех модулях про-
граммы, где они объявлены. Если переменная в том же операторе ини-
циализируется, спецификатор extern игнорируется.
static – статическая переменная. Время жизни – постоянное. Иници-
ализируется один раз при первом выполнении оператора, содержащего
определение переменной. В зависимости от расположения оператора
описания статические переменные могут быть глобальными и локаль-
ными. Глобальные статические переменные видны только в том модуле,
в котором они описаны.
register аналогично auto, но память выделяется по возможности в
регистрах процессора [3].
Пример 6. Описания переменных с применением спецификаторов
int a;//1 глобальная переменная a main()
{ int b;//2 локальная переменная b
extern int x;//3 переменная х определена позже
static int c;//4 локальная статическая
//переменная c
a = 1;//5 присваивание глобальной переменной
23