Динамические переменные и списковые структуры

Необходимость в динамических структурах данных возникает в следующих случаях:

1. Когда нужен массив или иная структура, размер которой изменяется в широких пределах.

2. Когда в определённых частях программы требуется получить дополнительную память под переменные довольно большого размера.

3. Когда требуется эффективно использовать оперативную память компьютера.

Во всех этих случаях возникающие проблемы можно решить, применяя динамические переменные и ссылочные типы данных. Для организации динамических данных выделяется специальная область памяти, называемая кучей (heap), непрерывный участок определённого размера. При этом в специальной переменной сохраняется адрес начала этого участка. Такие переменные называют ссылочными переменными. Синоним этого термина — указатель (pointer).

В Delphi для определения ссылочной переменной нужно описать её как переменную, имеющую ссылочный тип. В качестве ссылочного можно использовать встроенный тип Pointer или любой другой тип, определяемый пользователем следующим образом:

Type Имя_ссылочного_типа=^Имя_базового_типа;

где Имя_базового_типа – любой идентификатор типа.

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

Например: {базовые типы} Type DimType = array [1..100] of Byte;

MyRecType = record

a: real; b: integer;

end;

{ссылочные типы} IntPtr=^Integer; {ссылка на целое значение}

DimPtr=^DimType; {ссылка на массив данных}

RecPtr=^MyRecType; {ссылка на запись}

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

Указатель (указательная переменная P) может находиться в трёх состояниях:

1. Неопределённое состояние в начале работы программы (указатель ещё не инициализирован) рис.11а.

2. Содержит адрес какой-либо переменной (адрес размещения) рис.11б.

3. Динамические переменные и списковые структуры

P

Динамические переменные и списковые структуры Присвоено зарезервированное слово nil, такой указатель называют пустым, т.е. он не указывает ни на какую переменную и содержит 0 в каждом из четырёх байтов рис.11в.

Основы Java — Переменные и Константы в Java


Читать еще…

Понравилась статья? Поделиться с друзьями: