Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В языках программирования очень большое значение имеют понятия область видимости и время жизни объектов программы.
Область видимости это часть текста программы, в котором может быть использован данный объект.
Время жизни переменной - интервал выполнения программы, в течение которого программный объект существует в памяти.
Оба эти понятия тесно связаны с понятием блока программы. Блоком в программе является последовательность объявлений или операторов, заключенных в фигурные скобки {}. Существуют два типа блоков:
1) составной оператор;
2) определение функции.
Блоки могут включать в себя составные операторы и другие блоки, но не могут содержать определения функции, то есть внутри функции нельзя определить другую функцию.
Объекты, объявленные вне блоков, обычно называют глобальными объектами. С этой точки зрения все функции программы являются глобальными объектами. Время жизни функций – все время выполнения программы. Область видимости функций начинается с точки ее объявления (это определение самой функции или объявление ее прототипа) и заканчивается при завершении программы. Кроме функций на глобальном уровне можно определять и другие программные объекты – константы, переменные, типы данных и т.д. Их время жизни и область видимости также начинаются с точки объявления.
Переменные и другие программные объекты, определенные внутри блока называют локальными объектами. Временем жизни таких объектов обычно является блок, в котором эти объекты определены. Область видимости локальных объектов – промежуток между объявлением локального объекта и концом блока, в котором эти объекты определены. В функции все формальные параметры и другие объекты, которые определены внутри тела функции являются локальными. Почти все они создаются в памяти (в стеке) на время работы функции и уничтожаются при ее завершении.
Рассмотрим пример:
int I = 10; // Глобальная переменная
…….
void F (int a) // Параметр а – локальная переменная
{
cout << I; // На экране 10 – значение глобальной переменной I
……
if (I) // Анализируется значение глобальной переменной I
{
int I = 200, J = 3000; // Локальные переменные
cout << I; // На экране 200 – значение локальной переменной I
…….
}
cout << I; // На экране 10 – значение глобальной переменной I
cout << J; // Ошибка – переменной J больше не существует
……
}
При совпадении имен глобального и локального объекта локальный объект “перекрывает“ глобальный объект (в нашем примере – переменные I).
Время жизни и область видимости локальных переменных, определенных на уровне заголовка цикла for, – весь оператор for:
for (int a = 0, b = 10; a < 20; ++ a, -- b)
{
…….
cout << a * b;
…….
}
Здесь, хотя переменные a и b определены вне блока, их можно использовать внутри блока тела цикла.
Областью видимости и временем жизни программных объектов можно управлять, используя модификаторов классов памяти.
Дата публикования: 2014-11-28; Прочитано: 937 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!