Информатика -продвинутый курс


ДИНАМИЧЕСКИЕ ИНФОРМАЦИОННЫЕ СТРУКТУРЫ - часть 3


Как уже было отмечено, символ ^ после имени указателя означает, что речь идет не о значении ссылочной переменной, а о значении того динамического объекта, на который указывает эта ссылочная переменная. Так, если в программе имеется описание переменной

var:^integer

то при выполнении процедуры new(i) порождается динамическая переменная типа integer. Если затем будет выполнен оператор присваивания

i^:= 58

то этой динамической переменной будет присвоено значение 58.

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

Так, ecли j - статическая переменная типа integer, то допустимы операторы присваивания

j:=j+i^2; i^:i^div 3+4; i^sqr(i^) и т.д.

Если ссылочная переменная b указывает на массив

type mas = array[l... 100] of integer, ,

var b:^mas

то в этом случае переменные с указателем могут выглядеть, например, так:

b^[2], b^[k+5].

Если в процессе выполнения программы некоторый динамический объект р^,

созданный в результате выполнения оператора new(p), становится ненужным, то его можно уничтожить (очистить выделенное ему место в памяти) с помощью стандартной процедуры dispose(p). В результате выполнения оператора вида dispose(p) динамический объект, на который указывает ссылочная переменная р, прекращает свое существование, занимаемое им место в памяти становится свободным, а значение указателя р становится неопределенным (но не равным nil).

Если до вызова процедуры dispose(p) имел пустое значение nil, то это приведет к «зависанию» программы.

Если же до вызова этой процедуры указатель р не был определен, то это может привести к выходу из строя операционной системы.

Значение одного указателя можно присвоить другому указателю того же типа. Можно также указатели одинакового типа сравнивать друг с другом, используя отношения «=» или «<>».




Начало  Назад  Вперед



Книжный магазин