Значение ссылочной переменной R можно присваивать другой ссылочной переменной того же типа.
Пример 1. Пусть Q,R:↑POINT; тогда оператор Q: = R; зашлет в Q тот же адрес, что хранится в R.
Рассмотрим действия со ссылочными переменными на следующей схеме. Пусть Q и R указывают на различные компоненты динамических переменных типа С:
Пусть в памяти машины размещены две цепочки динамических переменных (рис. 7):
Рис. 7
Выполним один из четырех операторов: Q: = R; Q↑: = R↑; Q↑.I:=R↑.I; либо Q↑.P: = R↑.P;
а) После выполнения оператора Q: = R; переменная Q указывает на ту же динамическую переменную, что и R:
б) После выполнения оператора Q↑:=R↑; (из исходного состояния (рис. 7)) получим
На место указанной переменной указывавшей на 30, заслана переменная указывающая на 25.
в) После выполнения оператора Q↑.I: = R↑.I из исходного состояния (рис. 7) получим следующее:
На место целого значения 20 заслано значение 15; поле указателя не изменилось.
г) После выполнения оператора Q↑.P: = P↑.P из исходного состояния (рис. 7) получим:
На место ссылки на компоненту заслана ссылка на компоненту поле целого значения не изменилось.
Ссылочные переменные могут указывать на одну и ту же переменную, т. е. быть равными, как R и Q в случае а).
Ссылочные переменные можно сравнивать посредством операций = и <>. Логическое выражение Q = R имеет значение TRUE для случая а) и значение FALSE для случаев б) и в), так как для б) ссылочные переменные Q и R указывают на разные динамические переменные, имеющие, правда, равные значения.
В качестве аналога нуля для ссылочных переменных принято специальное значение NIL: если переменная имеет значение NIL, то это означает, что она не указывает ни на какую переменную. Значение NIL в поле указателя имеет всегда первая компонента цепочки динамических переменных.
Пример.
Значение NIL можно заслать оператором присваивания: L: = NIL; если L=NIL, то цепочка пуста.
Чтобы определить, что данный элемент является первым в цепочке переменных, достаточно проверить на NIL значение поля указателя этой переменной.
Пример.
Замечание. Попытка обратиться к указанной переменной с указателем, имеющим значение NIL, приводит к ошибке. Диагностика в этом случае не всегда выдается.