окажчик на динамічну змінну, пам'ять для якої виділена інструкцією new (p), то інструкція dispose (р) звільняє займану динамічноїзмінної пам'ять.
Створення, використання і знищення динамічних змінних
p1, p2, p3: ^ Integer;// покажчики на змінні типу integer
// створення динамічних змінних типу integer
// виділення пам'яті для динамічних змінних
New (p1);
New (p2); (p3);
р1 ^: = 5;
р2 ^: = 3;
р3 ^: = р1 ^ + р2 ^; ('Суммачіселравна' + IntToStr (р3 ^));
// знищення динамічних змінних, звільнення пам'яті
Dispose (p1);
Dispose (р2); (р3);;
На початку роботи процедура створює три динамічні змінні. Дві змінні, на які вказують p1 і р2, отримують значення в результаті виконання інструкції присвоювання. Значення третьої змінної обчислюється як сума перших двох. p align="justify"> Списки
Покажчики та динамічні змінні дозволяють створювати складні динамічні структури даних, такі як списки і дерева.
Список можна зобразити графічно, як показано на малюнку 2.
В
Малюнок 2. Графічне зображення списку. br/>
Кожен елемент списку (вузол) являє собою запис, що складається з двох частин. Перша частина - інформаційна. Друга частина відповідає за зв'язок із наступним і, можливо, з попереднім елементом списку. Список, в якому забезпечується зв'язок тільки з наступним елементом, називається однозв'язний. p align="justify"> Для того щоб програма могла використовувати список, треба визначити тип компонентів списку і змінну-вказівник на перший елемент списку. Нижче наведено приклад оголошення компонента списку студентів:
type = ^ TStudent;// покажчик на змінну типу TStudent
// опис типу елемента списку = record
FIO: string [60];// прізвище: integer;// номергруппи: string [60];// домашня адреса: TPStudent;// покажчик на наступний елемент списку; head: TPStudent;//покажчик на перший елемент списку
Додавати дані можна в початок, в кінець або в потрібне місце списку. У всіх цих випадках необхідно коригувати покажчики. На малюнку 3 зображено процес додавання елементів в початок списку. p align="justify"> Додавання елемента в початок динамічного списку
= ^ TStudent;// указательнатіп TStudent = record_name: string [20];// фамілія_name: string [20];// ім'я: TPStudent;// следующійелементспіска
end; head: TPStudent;// початок (голова) списку, додати елемент в початок списку
procedure add;: TPStudent;// новийелементспіска