НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

22.2. Операции над ссылочными переменными

Значение ссылочной переменной R можно присваивать другой ссылочной переменной того же типа.

Пример 1. Пусть Q,R:↑POINT; тогда оператор Q: = R; зашлет в Q тот же адрес, что хранится в R.

Рассмотрим действия со ссылочными переменными на следующей схеме. Пусть Q и R указывают на различные компоненты динамических переменных типа С:


Пусть в памяти машины размещены две цепочки динамических переменных (рис. 7):

Рис. 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, приводит к ошибке. Диагностика в этом случае не всегда выдается.

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь