Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
48
Добавлен:
16.02.2016
Размер:
1.18 Mб
Скачать

Операция ::

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

#include <iostream.h>

// Объявление глобальной переменной

int Turn =5;

int main ()

{

// Объявление локальной переменной

int Turn = 70;

// Вывод локального значения: cout « Turn « ' \n';

// Вывод глобального значения: cout « ::Turn « '\n';

return 0;

}

В результате в две строки будет выведено два значения: 5и 70.

Из рассмотренного примера видно, что были объявлены глобальная и локальная переменные с именем Turn, которые позже были выведены на печать.

Классы памяти

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

Таблица 4.1. Модификаторы переменных

Модификатор

Применение

Область действия

Время жизни

auto

локальное

Блок

временное

register

локальное

Блок

временное

extern

глобальное

Блок

временное

static

локальное

Блок

постоянное

глобальное

Файл

volatile

глобальное

Файл

постоянное

Ниже будет рассмотрен более подробно каждый ит приведенных классов памяти.

Автоматические переменные

Модификатор auto используется при описании локальных переменных. Поскольку для локальных переменных данный модификатор используется по умолчанию, на практике его чаще всего опускают.

#include <iostream.h>

int main ()

{

auto int MyVar = 2;

// то же что int MyVar = 2;

cout « MyVar;

return 0;

}

Модификатор auto применяется только к локальным переменным, которые видны только в блоке, в котором они объявлены. При выходе из блока такие переменные уничтожаются автоматически.

Регистровые переменные

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

#include <iostream.h>

int main ()

{

register int REG;

...

return 0;

}

Модификатор register применяют только к локальным переменным. Попытка употребления данного модификатора (так же как и модификатора auto) к глобальным переменным вызовет сообщение об ошибке. Переменная существует только в пределах блока, содержащего ее объявление.

Соседние файлы в папке ЯзыкС++Глушаков