русс | укр

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

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

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

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


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

Область действия имён. Локальные и глобальные имена

Так как в C++ нет вложенных функций, этот вопрос решается проще, чем на языке Pascal.

Есть несколько мест объявления переменных:

1) вне всех функций, в том числе вне main, например, в самом начале перед прототипами функций, между ними, перед функцией main или между текстами функций. Такие переменные, названные глобальными, “видны” из любой функции, размещенной после описания переменной, т. е. их можно там использовать. Память для глобальных переменных занята на всё время выполнения проекта;

2) в скобках в прототипе и в описании функции. Как видно из предыдущих примеров, не все используемые в функции переменные объявляются в заголовке. Здесь перечисляются только те переменные, которые должны быть переданы в функцию, то есть входные, и её результаты (выходные параметры), если такие есть. Такие переменные, названные формальными параметрами, доступны только в той единственной функции, в заголовке которой они описаны. Повторно в теле функции формальные параметры объявлять не надо! В прототипе функции имена параметров можно не писать, достаточно указать только их типы. Эта информация используется компилятором при проверке соответствия фактических и формальных параметров. При описании функции в её заголовке имена параметров и повторно их типы записываются обязательно:

3) переменные, содержащие некоторые промежуточные значения, объявляются в теле функции и доступны только в ней. Они не являются формальными параметрами, в заголовке функции не записываются, при вызове функции никак не передаются в неё и из функции не возвращаются.

4) как частный случай последней возможности переменные можно объявить внутри блока. Блок или составной оператор — это последовательность операторов, заключённая в фигурные скобки. Таким блоком может быть, например, тело любого из циклов, одна из ветвей if или switch, например, if (…) { float t; …}. Такую переменную (t) можно использовать только в этом блоке и во всех внутренних (вложенных) по отношению к нему. Вне данного блока она недоступна. Этим мы гарантируем, что вне блока такая переменная не будет изменена.

Переменные, объявленные по правилам 2), 3), 4), называются локальными. Они имеют следующие особенности:

· их можно объявить в любом месте функции или блока до первого их использования, то есть не обязательно в самом начале. Это, конечно, не относится к формальным параметрам, которые объявляются всегда в скобках заголовка;

· локальные переменные создаются при входе в функцию или блок и уничтожаются при выходе из них. При этом не просто теряются значения, но и освобождается память;

· локальные переменные в разных функциях или блоках, не вложенных друг в друга, могут иметь одинаковые идентификаторы. Но на самом деле это разные переменные, для них отводится разная память;

· как правило, использование локальных переменных предпочтительнее глобальных. Например, из двух вариантов функции

a) float MyMax1 (float x, float y)

{ return x>y?x:y;

}

b) float x, y;

float MyMax2 ()

{ return x>y?x:y;

}

первый лучше, так как использует локальные переменные. Во втором варианте используются глобальные переменные.

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

Просмотров: 917


Вернуться в оглавление



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


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

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

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


 


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

 
 

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