logo
Posobie_Cpp

3.1. Ссылки и указатели.

В разделе 1.4 простые переменные определялись, как именованная область памяти, в которой хранятся данные. В процессе работы программа находит нужную переменную в памяти компьютера благодаря ее адресу. Узнать адрес переменной в С++ можно при помощи операции &. Например, если test – переменная, то &test определяет ее адрес. Следующий пример поясняет работу этой операции.

int cup = 4;

double nut = 6.5;

cout << “nut= ”<<nut;

cout << “and nut address= ”<<&nut<<’\n’;

cout << “cup= ”<< cup;

cout << “and cup address= ”<<&cup<<’\n’;

В результате выполнения программы на экране отобразится приблизительно следующее1:

nut = 6.5 and nut address = 0x0012FF7C

cup = 4 and cup address = 0x0012FF74

Как видим, при отображении адресов используется шестнадцатеричная система представления чисел. Разность между двумя адресами равно 8 и это имеет смысл, т.к. nut объявлена как тип double под который отводится 8 байт.

При помощи знака & можно определить ссылку, которая по сути является синонимом имени переменной или вторым именем уже определенной переменной:

int first = 31; // объявили целочисленную переменную

int & second = first; // ссылка second – альтернативное имя first

cout<<second<<endl;

second=0; // изменили значение не только second

cout<<first; // что теперь будет выведено на экран?

Можно создать ссылку на константу:

const double & pi = 3.1415; // const указывает, что pi изменять нельзя

При работе со ссылками следует помнить следующие правила:

Следующие примеры иллюстрируют ошибки, которые могут возникать при работе со ссылками: