Довідкові та динамічні змінні

Під кількість посилань змінну транслятор відводить місце в пам'яті машини; ця змінна має ім'я і явно згадується в програмі. Довідкові змінні утворюють новий тип даних - "посилання" (покажчики).

Динамічні змінні, як правило, мають тип "запис" (record), тому що повинні містити, крім значення (цілого, речового та т.п.), посилання на іншу динамічну змінну пов'язаної структури.

Позначимо тип посилальної змінної через point. а тип динамічної змінної через ct. Тоді цей факт описується наступним чином:

Кажуть, що тип point вказує (посилається) на компоненти типу ct. або тип point пов'язаний з типом ct.

Кількість посилань змінну R можна описати двома способами:

Мінлива R вказує на компоненту типу ct.

Щоб зв'язати динамічні змінні в ланцюжок, треба в кожній компоненті мати посилання на попередню компоненту.

Наприклад, компоненти, що містять числа 5, 10, 15, 8, повинні мати ще інформацію про те, де знаходиться попередній елемент, тому що це не масив і компоненти розміщуються необов'язково поспіль.

Наведемо тип таких даних, позначивши його ct. Очевидно, цей тип є «запис» з двома полями: полем цілого значення (I) і полем посилання (P):

Очевидно, довідкова змінна, яка вказує на такий тип даних, повинна мати теж тип point. Наведемо цей тип:

Як ми бачимо, виник порочне коло: для опису типу point залучається поняття ct. а при описі типу ct необхідно використовувати point.

Домовилися в цьому випадку спочатку описувати тип посилальної змінної, а потім вже тип компоненти:

Правила мови Паскаль тільки при описі посилань допускають використання ідентифікатора (ct) до його опису; у всіх інших випадках, перш ніж згадати ідентифікатор, необхідно описати його тип. Розглянемо схему утворення ланцюжка динамічних даних, що містять числа 5, 10.

Машині необхідно зробити наступні дії:

Послідовність подібних дій створює ланцюжок динамічних змінних.

Схожі статті