Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Глобальные и локальные данные



В языках программирования очень большое значение имеют понятия область видимости и время жизни объектов программы.

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

Время жизни переменной - интервал выполнения программы, в течение которого программный объект существует в памяти.

Оба эти понятия тесно связаны с понятием блока программы. Блоком в программе является последовательность объявлений или операторов, заключенных в фигурные скобки {}. Существуют два типа блоков:

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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...