Типізовані покажчики
Type Р = ^Integer;
ТипIntegerу цьому прикладі єбазовим типом. Маючи в програмі визначення типу покажчиків (посилального типу), можна за загальними правилами описати змінні цього типу. При цьому типи посилань в описах змінних можна задавати як за допомогою ідентифікаторів, так і явно, наприклад:
У цьому прикладіRecPtrописується як покажчик на зміннуRecordType. Базовий типRecordTypeописується в тій же послідовності визначень типів, що і типRecPtr.
Для того щоб привласнити змінною посилання типу певне значення, можна скористатися унарною операцієювзяття покажчика, яка будується із знака цієї операції-символу@(амперсант) і одного операнда-змінної. Наприклад, якщо є опис змінноїIцілого типу:
то застосування цієї операції до змінної I: @I дає як результат значення типупокажчик на ціле. Аналогічний результат вийде і в результаті операціїР = ^Integer;
Операція взяття покажчикадопустима будь-яких змінних, зокрема елементів масивів, полів записи тощо.
Наприклад, якщо є опис:
Var А: array[1..10] of integer;
то конструкція@А[I]має сенсвказівника на I-е ціле в масиві Аі також може брати участь у присвоєнні:Р := @А[I].
Посилальні типи можна утворювати від будь-яких типів, тому допустимо визначення видупокажчик на покажчик.
Нетипізований покажчик(pointer)
У Турбо Паскалі можна оголошувати покажчик і пов'язувати його у своїй з будь-яким конкретним типом даних. Для цього є стандартний типPointer. Він означаєнетипізованийпокажчик, тобто покажчик, який не вказує на жодний певний тип. За допомогою нетипізованих покажчиків зручно динамічно розміщувати дані, структура та тип яких змінюються під час програми.
Змінні типуPointerне можуть бути розіменовані: вказівка символу ^ після такої змінної викликає появу помилки. Як і значення, що позначається словомNil, значення типуPointerсумісні з іншими типами покажчиків.
Над значеннями типів посилань допускаються дві операції порівняння на рівність і нерівність, наприклад@Х <> @YабоР1 = Р2.
Два вказівники рівнітільки в тому випадку,якщо вони посилаються на один і той же об'єкт.