Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Разыменование (занесение значений)
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;
Дата публикования: 2014-10-25; Прочитано: 312 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!