End;
Var
A:Point;
А – ідентифікатор,що має тип вказівника Спочатку значення A неозначено, оскільки описана структура даних не створена і вказівник не вказує адресу початкового елемента динамічноі структури. Щоб створити таку структуру в Паскалі передбачена процедура New(A). Ця процедура створює перший елемент динамічної структури і розміщує адресу цієї структури в вказівник, тобто в змінну А. Пам’ять для розміщення елементів динамічної структури береться зовні програми. Цю пам’ять принято називати “ кучею” в результаті виконання процедури New. В зв’язку з введенням в Паскалі типу данних вказівник в стандарті мови передбачена константа з іменем Nil. Nil –це вказівник, який ні на що не вказує, тобто він має значення Nil.
В Паскалі є процедура Dispose,форма запису якої має вигляд
Dispose(Ідентифікатор)
З допомогою цієї процедури звільняється пам’ять, занята структурами даних, на які вказує посилання. Звільнена пам’ять повертається в секцію Heap(‘’куча’’).
Приклад
Var Q:^t;
Begin
…
…
new(Q);
…
…
Dispose(Q);
Приклад
Type D1=^data1; D2=^data2;
Var
E1:D1;
E2:D2;
Описані нижче оператори присвоювання заборонені в Паскалі, оскількиE1 і E2 вказівники різних типів даних:
E1:= E2;
E2:=E1;
Після виконання першого оператора виявиться, що вказівка на об’єкт типу data1 буде вказівкою на об’єкт типу data2, і навпаки, що в Паскалі заборонено.
Приклад. Маємо файл цілих додатніх чисел, що складається з декількох послідовностей чисел, кожна з яких закінчується цілим від’ємним числом –1. Вивести в вихідний файл ці послідовності чисел, але всередині кожної послідовності числа повинні бути в зворотньому порядку.
1 3 7 –1 2 0 6 7 –1 вхідний файл
7 3 1 –1 7 6 0 2 –1 вихідний файл
Довжина цих послідовностей наперед невідома, тому змінні, в які будуть зчитуватися ці числа повинні мати динамічну структуру.
Program Lists;
Type
Pointer=^DataSet;
DataSet=record
Data:integer;