- Локальные переменные
- Формальные параметры
- Статические переменные
- Глобальные переменные
- Input переменные
- Extern переменные
- Инициализация переменных
- Область видимости и время жизни переменных
- Создание и уничтожение объектов
Область видимости и время жизни переменных
Существует два основных вида области видимости: локальная область видимости и глобальная область видимости.
Переменная, объявленная вне всех функций, помещается в глобальную область видимости. Доступ к таким переменным может осуществляться из любого места программы. Такие переменные располагаются в глобальном пуле памяти, поэтому время их жизни совпадает со временем жизни программы.
Переменная, объявленная внутри блока (часть кода, заключенная в фигурные скобки), принадлежит локальной области видимости. Такая переменная не видна (поэтому и недоступна) за пределами блока, в котором она объявлена. Самый распространенный случай локального объявления – переменная, объявленная внутри функции. Переменная, объявленная локально, располагается на стеке, и время жизни такой переменной совпадает со временем жизни функции.
Так как областью видимости локальной переменной является блок, в котором она объявлена, то существует возможность объявлять переменные с именем, совпадающим с именами переменных, объявленных в других блоках; а также объявленных на более верхних уровнях, вплоть до глобального.
Пример:
void CalculateLWMA(int rates_total,int prev_calculated,int begin,const double &price[])
|
Обратите внимание на переменную i, объявленную в строке
for(int i=begin; i<limit; i++)
|
Ее область видимости – только цикл for, за пределами этого цикла действует другая переменная с тем же именем, объявленная в начале функции. Кроме того, в теле цикла объявлена переменная k, областью видимости которой является тело цикла.
Локальные переменные можно объявлять со спецификатором доступа static. В этом случае компилятор располагает такую переменную в глобальном пуле памяти. Поэтому, время жизни статической переменной совпадает со временем жизни программы. При этом область видимости такой переменной ограничивается пределами блока, в котором она объявлена.
Смотри также
Типы данных, Инкапсуляция и расширяемость типов, Инициализация переменных, Создание и уничтожение объектов