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

Void PrintTest(void);

Int main о

{

// Объявляем локальную переменку» Test:

int Test = 10;

// Вызов функции печати

// глобальной переменной:

PrintTest() ;

cout « "Локальная: " « Test « '\n';

// Добавляем новый блок с еще одной

// локальной переменной Test:

{

int Test = 5;

cout « " Локальная: " «Test « '\n' ;

}

// Возвращаемся к локальной Test

// вне блока:

cout « " Локальная: " «Test « '\n';

return 0;

}

Void PrintTest(void) {

cout « "Глобальная: " « Test « '\n';

}

Результат модифицированной программы будет выглядеть следующим образом:

Глобальная: 200 Локальная: 10 Локальная: 5 Локальная: 10

Как было показано выше, объявление локальной переменной скрывает глобальную переменную с таким же именем. Таким образом, все обращения к имени глобальной переменной в пределах области действия локального объявления вызывают обращение к локальной переменной.

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

#include <iostream.h>

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

int Turn =5;

Int main ()

{

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

int Turn = 70;

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

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

return 0;

}

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

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

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

Таблица 5.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>

Соседние файлы в папке ЛекцииКарасева