Лекция: Getmem (p, sizeof(real)); Getmem(q, sizeof(A));

 

Разыменование (занесение значений)

x^ := 10; y^ := 20; B^:=255; R^:=1.125;

for i:=1 to 5 do Pa^[i] := sqr(i);

Pr^.c := `$`; Pr^.n := 1000;

 

Копирование значений

x^ := y^;

R^ := B^;

Копирование адресов

x:=y;

Пусть в тексте программы имеется: var k:real; … k := 625.5;

Тогда присвоение адреса переменной k указателям r и p будет выглядеть следующим образом: r:=@k; p:=@k;

 

Высвобождение памяти

Dispose(y); Dispose(x);

Freemem (p,sizeof(p));

Dispose(Pa); Dispose(Pr);

 

13.5.7. Задание «нулевого» значения

New(x);

x := nil;

 

ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ ДЛЯ ОРГАНИЗАЦИИ СВЯЗАННЫХ ДИНАМИЧЕСКИХ СТРУКТУР

 

Чаще всего указатели используют для ссылки на записи, чем достигается значительная экономия памяти. В такие записи включаются информационные поля для хранения интересующих пользователя данных (любого типа, который может быть полем записи) и обязательно хотя бы одно поле-указатель на следующую запись. Наличие поля-адреса позволяет образовывать связанные списки – структуру, в которой отдельные записи связаны последовательно друг с другом посредством поля-указателя.

Списки

 

Линейный список – связанный список, в котором имеется адрес точки входа в список (обозначим его HEAD), а последний элемент указывает на Nil. В любую точку списка разрешается добавлять элемент (ы) и исключать любой элемент. Обе операции производятся с помощью перенастройки указателей и, соответственно, выделения памяти и занесения в нее значения (в случае вставки элемента в список) или высвобождения памяти (в случае удаления из списка).

П р и м е р линейного односвязного списка представлен на рис. 14.1.

 


Рис. 14.1. Список в динамической памяти

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

П р и м е р описания списка

Type psp = ^tsp;

tsp = Record

{Поля любых типов}

next: psp

End;

еще рефераты
Еще работы по информатике