Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Класс памяти определяет размещение объекта в памяти и продолжительность его существования
Явно задать класс памяти можно с помощью спецификаторов: auto, register, static, extern. Ниже указаны спецификаторы класса памяти и соответствующее им место размещения объекта: · auto -автоматически выделяемая, локальная оперативная память - сегмент стека (временная память). Спецификатор auto может быть задан только при определении переменной блока, например в теле функции. Локальная продолжительность существования. Этим объектам память выделяется при входе в блок и освобождается при выходе из него. Вне блока переменные класса auto не существуют. · register -автоматически выделяемая по возможности регистровая память (регистры процессора). Спецификатор register аналогичен auto, но для размещения переменной используется не оперативная память, а регистры процессора. Если регистры заняты другими переменными, переменные класса register обрабатываются как объекты класса auto. · static - статическая продолжительность существования, память выделяется в сегменте данных, объект существует до конца программы. Внутренний тип компоновки – объект будет существовать в пределах того файла с исходным текстом программы, где он определен. Этот класс памяти может быть приписан как переменным, так и функциям. · extern - внешняя, глобальная память, выделяется в сегменте данных. Объект класса extern обладает статической продолжительностью существования и внешним типом компоновки. Он - глобален, то есть, доступен во всех файлах программы. Этот класс может быть приписан как переменным, так и функциям. Класс памяти,и соответственноразмещение переменной (в стеке, в регистре, в динамически распределенной памяти, в сегменте данных) зависит как от синтаксиса определения, так и от размещения определения в программе. Область действия (ОД) идентификатора (имени) - это часть программы, в которой можно обращаться к данному имени (сфера действия имени в программе). Рассмотрим все случаи: 1) имя определено в блоке (локальные переменные): ОД - от точки определения до конца блока; 2) формальные параметры в определении функции (формальные параметры – это те же локальные переменные функции): ОД параметров– блок тела функции; 3) метки операторов: ОД меток– блок тела функции; 4) глобальные объекты: ОД глобальныхобъектов- вся программа от точки их определения или от точки их описания; 5) формальные параметры в прототипе функции: ОД параметров - прототип функции. Область видимости (ОВ) Понятие области видимости понадобилось в связи с возможностью повторных определений идентификатора внутри вложенных блоков или функций. В этом случае разрывается связь имени с переменной, то есть с участком памяти данной переменной, она становится "невидимой" внутри вложенного блока, хотя сфера действия имени сохраняется. ОВ – это часть программы, в которой обращение к имени переменной позволяет обратиться к участку памяти, связанному с данной переменной. ОВ может быть только меньшей или равной ОД. Следующая программа проиллюстрирует данную ситуацию [3]: #include<iostream.h> int k=0; void main() {int k=1; {cout << k; char k = 'A'; cout << k; cout <<::k; cout << k;} cout << k;} Результат выполнения программы: 1A0A1 Объявлена глобальная переменная int k. Затем в главной функции определяется локальная переменная с тем же именем с именем и того же типа. Глобальная переменная становится "невидимой" в теле функции. Обращаться к "невидимой" внутри функции переменной можно используя операцию доступак внешнему объекту ::k. В главной функции определен внутренний блок, в котором определена локальная переменная внутреннего блока с тем же именем char k. От точки определения символьной переменной до конца внутреннего блока локальная целочисленная переменная int k становится недоступной. После выхода из блока видимость (доступность) данной переменной восстанавливается. Date: 2015-07-17; view: 493; Нарушение авторских прав |