- •Обзорные лекции по курсу
- •Параметры и аргументы функций
- •Int swap(int, int);
- •Void func();
- •Int MyFunction(int Number, float Point);
- •Int main ()
- •Void Out(double numb, double sig, bool fig)
- •Int. Main ()
- •Void PrintTest(void);
- •Int main о
- •Void PrintTest(void) {
- •Int main ()
- •Int main ()
- •Int main ()
- •Void ChangeFlag(void);
- •Void ChangeFlag(void)
- •Int main()
- •If(Flag)
- •Int Count(void);
- •Int main()
- •Int result;
- •Int Count(void)
- •Volatile short sTest;
- •Volatile const int vciTest;
- •Int main()
- •Int main ()
- •Int main 0
- •Int main()
- •Inline double sqr(double X)
- •Inline double Round(double X)
- •Int swap(int, int);
- •Void func();
- •Int main()
- •Int main 0
- •Упражнения для самопроверки
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>