Примеры ссылок в С++

В С++ есть неявная форма указателя - ссылка. По своей, что называется, природе, ссылка действительно схожа с указателем. Однако, в отличие от указателя, при работе со ссылкой пользователь не получает прямого до­ ступа к адресу ячейки памяти. В некотором смысле ссылка - это указатель, но только со скрытым адресом. Способ объявления и использования ссылок в программе полностью отличается от способов работы с указателями. Обычно ссылки используются при передаче аргументов функциям, при воз­ вращении значений функций через ссылки, а также при создании псевдонимов объектов В последнем случае речь идет о независимой ссылке На ней остановимся подробнее Независимая ссылка - это фактически еще одно название для переменной в программе Значение ссылки - это значение переменной, на которую ссылка выполнена (в этом смысле она отличается от указателя, значением которого является адрес ячейки, на которую ссылается указатель) При объявлении ссылки необходимо сразу указывать, на какую переменную она ссылается (в этом случае говорят об инициализации ссылки) Ссылка инициализируется только один раз При объявлении (и инициализации) ссылки перед ее именем указывается оператор & В дальнейшем имя ссылки служит еще одним альтернативным названием для переменной, на которую выполне­на ссылка В листинге приведен пример программы с использованием ссылки.
#include 
using namespace std;
int main(){
int n;
int ©=n;
copy=100;
n++;
cout << n << "\n";
cout << copy << "\n";
return 0;
}
В программе объявляется целочисленная переменная n Командой int &сору=п объявляется независимая ссылка сору, значением которой указана переменная п Это означает, что в дальнейшем п и сору можно использовать как независимые названия для одной и той же переменной В частности, после выполнения команды сору=100 такое же значение по­ лучит переменная п Поэтому вполне корректна и следующая команда n++. После ввода на экран значений п и сору убеждаемся, что в обоих случаях значение равно 101.

Убедиться в том, что независимая ссылка на практике является всего лишь альтернативным способом обращения к переменной, можно на следующем простом примере ниже приведен код программы, в которой одновременно используются и ссылки, и указатели Причем создается ука­затель как на переменную, так и на ссылку на эту переменную (хотя суще­ствует рекомендация не использовать указатели на ссылки, большинство компиляторов поддерживают такой механизм).
#include 
using namespace std;
int main(){
int n,*p,*q;
int ©=n;
p=&n;
copy=100;
(*p)/=10;
q=©
n++;
cout << n << "\n";
cout << copy << "\n";
cout << *p << "\n";
cout << *q << "\n";
cout << p << "\n";
cout << q << "\n";
return 0;
}
Онлайн всего: 1
Гостей: 1
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте