Общие сведения о ссылках.
С этого урока мы начнем рассматривать другой механизм передачи параметров, в частности, с использованием ссылок. Использование указателей в качестве альтернативного способа доступа к переменным таит в себе опасность - если был изменен адрес, хранящийся в указателе, то этот указатель больше не ссылается на нужное значение. Язык C предлагает альтернативу для более безопасного доступа к переменным через указатели. Объявив ссылочную переменную, можно создать объект, который, как указатель, ссылается на другое значение, но, в отличие от указателя, постоянно привязан к этому значению. Таким образом, ссылка на значение всегда ссылается на это значение. Ссылку можно объявить следующим образом:
Раз ссылка является другим именем уже существующего объекта, то в качестве инициализирующего объекта должно выступать имя некоторого объекта, уже расположенного в памяти. Значением ссылки после выполнения соответствующего определения с инициализацией становится адрес этого объекта. Проиллюстрируем это на конкретном примере:
Результат работы программы:
Комментарии к программе.Здесь объявляются четыре переменные. Переменнаяivar инициализирована значением 1234. Указателю на целое *iptr присвоен адресivar. Переменная iref объявлена как ссылочная. Эта переменная в качестве своего значения принимает адрес расположения в памяти переменной ivar. Оператор:
выводит на экран значение переменной ivar. Это объясняется тем, что iref - ссылка на местоположение ivar в памяти. Последнее объявление int *p = &iref; создает еще один указатель, которому присваивается адрес, хранящийся в iref. Строки:
дают одинаковый результат. В них создаются указатели, ссылающиеся на ivar. На рис.1 проиллюстрирована взаимосвязь переменных из приведенной программы: При использовании ссылок следует помнить одно правило: однажды инициализировав ссылку ей нельзя присвоить другое значение! Все эти конструкции:
приведут к изменению переменной ivar! Замечания.
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|