русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Время существования и область видимости переменных


Дата добавления: 2015-01-08; просмотров: 1199; Нарушение авторских прав


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

Время существования (время жизни) может быть двух видов:

- локальное – при выполнении блока, в котором переменная объявлена;

- глобальное – при выполнении всей программы.

Область видимости (область действия) также может быть двух видов.

- До конца блока, в котором объявлена переменная. В данном случае под блоком понимается тело функции, составной оператор {}, операторы if, for, while.

- До конца файла, в котором объявлена переменная.

Управлять этими характеристиками можно изменяя место объявления переменной в программе или используя спецификаторы классов памяти auto, register, static, extern.

Автоматическая (auto) переменная имеет локальную область действия и может быть использована только внутри блока, в котором она объявлена. Память для переменной выделяется при входе в блок и освобождается при выходе из него. Это спецификатор по умолчанию и его обычно не указывают явно.

Регистровая (register) переменная отличается от автоматической тем, что хранится в регистровой памяти, работа с которой происходит быстрее, чем с оперативной. Если свободной регистровой памяти нет (её объем довольно мал), то переменная становится автоматической.

Внешняя (extern) переменная является глобальной. Этот спецификатор говорит компилятору, что переменная будет объявлена (без extern) в другом файле.

Статической (static) переменной память выделяется после её объявления и сохраняется до конца выполнения программы. Статические переменные при объявлении по умолчанию инициализируются нулевыми значениями. Кроме того, они являются локальными для файла, т.е. из других файлов программы такая переменная доступна не будет.

Пример:

#include <iostream>

 



void func(int);

 



int global; // глобальная переменная

static char ch = 'a'; // статическая глобальная переменная

 



using namespace std;

 



void main()

{

char ch = 'b'; // локальная переменная ch перекрывает

// глобальную внутри блока функции main

cout << ch; // выведет b

register int loc = 100; // локальная переменная loc

 



{

char ch = 'c';

cout << ch; // выведет c

int restr = 50;

 



{

int totally_loc;

} // конец области действия totally_loc

 



} // конец области действия restr и ch из составного оператора

 



cout << ch; // выведет b

func(0);

system("PAUSE");

} // конец области действия loc и ch из функции main

 



void func(int param)

{

int loc; // локальная переменная loc, никак не связанная с первой

cout << ch; //выведет a

} // конец области действия param и loc

В приведённой программе на примере переменной ch показано, что в разных блоках могут быть объявлены переменные с одинаковыми именами. В этом случае переменная, объявленная внутри блока «перекрывает» переменную, объявленную выше.

Глобальная переменная ch перекрывается в функции main локальной переменной с таким же именем. А та ещё раз перекрывается переменной, объявленной внутри составного оператора {}.

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



<== предыдущая лекция | следующая лекция ==>
Объявление переменных | Комментарии


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.068 сек.