Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ссылочный тип данныхСтр 1 из 8Следующая ⇒
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ Ссылочный тип данных Программные объекты, которые порождаются с помощью соответствующих описаний, например в разделе Var, называются статическими. Память за ними закрепляется на все время работы программы; взаиморасположение и взаимосвязи их элементов всегда остаются постоянными. Данные, созданием и уничтожением которых может явно управлять программист, внутреннее строение которых формируется по определенному закону, но количество, взаимное расположение и взаимосвязи которых могут изменяться в процессе выполнения программы, называются динамическими. При объявлении данных динамической структуры в разделе описания указывается не переменная определенного типа, а ссылка на нее. Такая организация данных позволяет динамически занимать и освобождать память в процессе работы блока программы. Динамические переменные могут создаваться и ликвидироваться по мере необходимости и чаще всего реализуются как связанные структуры. Примером такой связанной структуры может служить очередь на прием к врачу. Каждый пациент запоминает человека, за которым занята очередь. Таким образом, все пациенты организованы в цепочку согласно очереди, но в пространстве размещены произвольным образом: вновь пришедший занимает любое свободное место. Подобным образом строятся структуры связанных данных, которые могут занимать память не подряд, а размещаться там, где есть свободное место, в отличие от массивов, для которых требуется непрерывная область памяти. В данном случае каждый элемент должен содержать ссылку на предыдущий элемент цепочки. Преимущества динамических переменных по сравнению с массивами или файлами проявляются при перемещении элементов. Исключение одного элемента данных из цепочки сводится к изменению одной-единственной ссылки и не требует перемещения остальных элементов. Исключенный элемент завершает работу, а занимаемый им фрагмент памяти освобождается. Для вставки компонента в цепочку достаточно изменить две ссылки, не сдвигая остальные элементы. Динамическая переменная не обозначается идентификатором, постоянное место ей в памяти не отводится, а резервируется и освобождается в процессе выполнения программы с помощью специальных процедур. Обращение к динамической переменной происходит посредством ссылочной переменной, которая содержит адрес соответствующей динамической переменной. Под ссылочную переменную отводится место в памяти, она имеет имя и явно упоминается в программе. Ссылочные переменные образуют новый тип данных - ссылки, или указатели. Общий вид описания указателя имеет следующий вид:
Type < тип-указатель> =^< идентификатор базового типа>; Var < идентификатор>: ^< тип-указатель>; или Var < идентификатор>: ^< идентификатор базового типа>; Например: Type или Var PP=^ integer; VPP: ^ integer; Var VPP: PP; Как видно из примеров, ссылочные переменные можно описать по общим правилам, ссылочные типы можно задавать как посредством идентификаторов, так и явно.
|