END;
2.12. Вказівники
До цього часу ми зустрічались з змінними, описаними в розділі var з описом імені змінної та її типом. Такі змінні Н. Вірт назвав статичними. Ці змінні можна використовувати, якщо відомо скільки пам’яті потрібно буде програмі. Але існує ряд задач, для яких неможливо наперед передбачити об’єм необхідної пам’яті. В цих задачах потрібний інший підхід: змінні потрібно формувати динамічно, не зв’язуючи їх з структурою програми. Так як засобів для явного опису таких змінних немає, то звертатися до них по імені неможливо. До таких змінних звертаються через вказівники, що створюються при формуванні динамічних змінних. Приклад однонаправленого списку схематично можна зобразити наступним чином:
| ®
| Вказівник
| ®
| Вказівник
| ®
| Nil
|
| Дані
|
| дані
|
|
|
| | | | | | | |
Вказівник вказує на наступний елемент. Всі елементи списку мають однаковий формат. Верхнє поле кожного елемента використовується для вказування адреси наступного елемента. Якщо елемент не має наступного елемента , то вказівнику в ньому присвоюється значення Nil.
Опис типу “ вказівник ” має вигляд:
^Ідентифікатор типу
Приклад
Type
Link=^object;
Var
P: Link;
ЗмІнна Р є вказівником на дані типу object. Вказівник – це адреса, а вказівникова змінна – це вмістиме ,що міститься по даному адресу.
Приклад. Описати динамічну структуру даних, що є однонаправленим списком. Кожний елемент цієї структури має два поля. Перше поле відводиться під дійсне число, а друге – містить адресу наступного елемента динамічної структури.
Type
Point=^Data;
Data=record
R:real;