Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Ссылочный тип данных






ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

Ссылочный тип данных

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

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

При объявлении данных динамической структуры в разделе описания указывается не переменная определенного типа, а ссылка на нее. Такая организация данных позволяет динамически занимать и освобождать память в процессе работы блока программы. Динамические переменные могут создаваться и ликвидироваться по мере необходимости и чаще всего реализуются как связанные структуры. Примером такой связанной структуры может служить очередь на прием к врачу. Каждый пациент запоминает человека, за которым занята очередь. Таким образом, все пациенты организованы в цепочку согласно очереди, но в пространстве размещены произвольным образом: вновь пришедший занимает любое свободное место.

Подобным образом строятся структуры связанных данных, которые могут занимать память не подряд, а размещаться там, где есть свободное место, в отличие от массивов, для которых требуется непрерывная область памяти. В данном случае каждый элемент должен содержать ссылку на предыдущий элемент цепочки. Преимущества динамических переменных по сравнению с массивами или файлами проявляются при перемещении элементов. Исключение одного элемента данных из цепочки сводится к изменению одной-единственной ссылки и не требует перемещения остальных элементов. Исключенный элемент завершает работу, а занимаемый им фрагмент памяти освобождается. Для вставки компонента в цепочку достаточно изменить две ссылки, не сдвигая остальные элементы.

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

Обращение к динамической переменной происходит посредством ссылочной переменной, которая содержит адрес соответствующей динамической переменной. Под ссылочную переменную отводится место в памяти, она имеет имя и явно упоминается в программе. Ссылочные переменные образуют новый тип данных - ссылки, или указатели. Общий вид описания указателя имеет следующий вид:

 

Type

< тип-указатель> =^< идентификатор базового типа>;

Var

< идентификатор>: ^< тип-указатель>;

или

Var

< идентификатор>: ^< идентификатор базового типа>;

Например:

Type или Var

PP=^ integer; VPP: ^ integer;

Var

VPP: PP;

Как видно из примеров, ссылочные переменные можно описать по общим правилам, ссылочные типы можно задавать как посредством идентификаторов, так и явно.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.