русс | укр

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

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

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

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


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

Область видимости объекта


Дата добавления: 2013-12-23; просмотров: 2284; Нарушение авторских прав


Область (сфера) действия, связанного с объектом идентификатора

Класс памяти

Атрибуты объектов

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

Кроме типов для объектов или переменных явно или по умолчанию определяются следующие атрибуты:

– класс памяти;

– область (сфера) действия, связанного с объектом идентификатора (имени);

– область видимости объекта;

– продолжительность существования объекта;

– тип компоновки (связывания).

 

Класс памяти - свойство объекта размещенного в памяти (переменной), которое определяет продолжительность существования объекта (время жизни), тип компоновки (связывания) и другие атрибуты.

Для явного задания классов памяти используются следующие модификаторы:

1. auto – автоматическая или локальная память. Память под переменную с этим модификатором выделяется в стеке каждый раз при выполнении оператора, содержащего определение переменной. Освобождение памяти происходит при выходе из блока, в котором определена переменная. Время ее жизни — с момента описания до конца блока. Для глобальных переменных (переменных, объявленных вне блока), этот спецификатор не используется, а для локальных он принимается по умолчанию, поэтому задавать его явным образом большого смысла не имеет.

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

2. register – регистровая память, аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto.



3. static – «статическая» память, внутренний тип компоновки, т.е. переменная доступна только в одном файле проекта, где она определена и статическая продолжительность существования, т.е. переменная существует в течение всего времени выполнения программы. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной.

4. extern – «внешняя» память, внешний тип компоновки, т.е. переменная доступна во многих файлах проекта, и статическая продолжительность существования.

Если класс памяти явно не определен, то для переменных, определенных вне блоков класс памяти – extern, а для определенных внутри блоков – auto.

 

Область (сфера) действия - часть исходного кода программы, в которой идентификатор может быть использован для доступа к связанному с ним объекту.

Область действия идентификатора определяется следующим образом:

1. Если идентификатор объявлен в блоке: область действия от точки объявления до конца блока. Если блок – тело функции, то в нем определены и указанные в заголовке формальные параметры функции. Из области действия могут исключаться внутренние блоки, если в них данный идентификатор используется повторно.

2. Если идентификатор объявлен вне блока: область действия от точки объявления до конца файла.

 

Понятие видимости объекта по смыслу близко к понятию области действия. Данное понятие стали выделять отдельно в связи с появление в языке Си++ новой операции «изменение области видимости».

Область видимости объекта - часть исходного кода программы, в которой к объекту можно непосредственно обращаться по его идентификатору.

Чаще всего область видимости совпадает с областью действия, различия появляются, если идентификатор используется повторно внутри внутренних блоков в качестве имени для другого объекта. Такие внутренние блоки выпадают из области видимости внешнего объекта.

Неформально можно записать:

«Область видимости» «≤» «Области действия»

Существует операция изменения области видимости. Ее формат:

::<идентификатор>

Данная операция является унарной и позволяет обращаться к глобальным объектам (переменным) даже если внутри блока данное имя используется для другой переменной.

Пример использования операции:

#include <stdio.h>

int i=1; // Глобальная переменная

void main()

{

int i=2; // Локальная перменнная блока

// Внутри блока глабальная переменная i не видна

printf("i=%d", i); // Печатается i=2

// С помощью операции :: обращаемся к глобальной переменной

printf("\ni=%d", ::i); // Печатаеся i=1

::i=100; // Изменяем значение глобальной переменной

}



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


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


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

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

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


 


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

 
 

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

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