Обращение к динамической переменной происходит посредством ссылочной переменной, которая содержит адрес соответствующей динамической переменной.
Под ссылочную переменную транслятор отводит место в памяти машины; эта переменная имеет имя и явно упоминается в программе. Ссылочные переменные образуют новый тип данных – "ссылки" (указатели).
Динамические переменные, как правило, имеют тип "запись" (record), т.к. должны содержать, помимо значения (целого, вещественного и т.п.), ссылку на другую динамическую переменную связанной структуры.
Пример. Пусть в памяти машины имеется динамическая переменная, содержащая поле целого значения 2 и поле ссылки (указатель) на другую компоненту связанной структуры (цепочки). Адрес данной переменной (ссылка) содержится в ссылочной переменной R.

Обозначим тип ссылочной переменной через point, а тип динамической переменной через ct. Тогда этот факт описывается следующим образом:
type point = ^ct;
Говорят, что тип point указывает (ссылается) на компоненты типа ct, или тип point связан с типом ct.
Ссылочную переменную R можно описать двумя способами:
a)
type point = ^ct; var R: point;
б)
var R: ^ct;
Переменная R указывает на компоненту типа ct.
Чтобы связать динамические переменные в цепочку, надо в каждой компоненте иметь ссылку на предыдущую компоненту.
Например, компоненты, содержащие числа 5, 10, 15, 8, должны иметь еще информацию о том, где находится предыдущий элемент, т.к. это не массив и компоненты размещаются необязательно подряд.
Опишем тип таких данных, обозначив его ct. Очевидно, этот тип есть «запись» с двумя полями: полем целого значения (I) и полем ссылки (P):
type ct = record I: integer; P: point end;
Очевидно, ссылочная переменная, указывающая на такой тип данных, должна иметь тоже тип point. Опишем этот тип:
type point = ^ct;
Как мы видим, возник порочный круг: для описания типа point привлекается понятие ct, а при описании типа ct необходимо использовать point.
Условились в этом случае сначала описывать тип ссылочной переменной, а затем уже тип компоненты:
type point = ^ct; ct = record I: integer; P: point end;
Правила языка Паскаль только при описании ссылок допускают использование идентификатора (ct) до его описания; во всех остальных случаях, прежде чем упомянуть идентификатор, необходимо описать его тип. Рассмотрим схему образования цепочки динамических данных, содержащих числа 5, 10.
Машине необходимо произвести следующие действия:

Последовательность подобных действий создает цепочку динамических переменных.
Взято из: Г.Л. Семашко, А.И. Салтыков «Программирование на языке Паскаль».
Схема переработана.