Ссылочная переменная — это псевдоним, то есть другое имя для уже существующей переменной. Как только ссылка инициализируется переменной, для ссылки на переменную может использоваться либо имя переменной, либо имя ссылки.
Ссылки против указателей
Ссылки часто путают с указателями, но есть три основных различия между ссылками и указателями:
-
Вы не можете иметь пустые ссылки. Вы всегда должны быть в состоянии предположить, что ссылка связана с законной частью хранилища.
-
Как только ссылка инициализируется на объект, она не может быть изменена для ссылки на другой объект. Указатели можно указывать на другой объект в любое время.
-
Ссылка должна быть инициализирована при ее создании. Указатели могут быть инициализированы в любое время.
Вы не можете иметь пустые ссылки. Вы всегда должны быть в состоянии предположить, что ссылка связана с законной частью хранилища.
Как только ссылка инициализируется на объект, она не может быть изменена для ссылки на другой объект. Указатели можно указывать на другой объект в любое время.
Ссылка должна быть инициализирована при ее создании. Указатели могут быть инициализированы в любое время.
Создание ссылок в C ++
Думайте о названии переменной как о метке, прикрепленной к расположению переменной в памяти. Затем вы можете думать о ссылке как о второй метке, прикрепленной к этой ячейке памяти. Таким образом, вы можете получить доступ к содержимому переменной через исходное имя переменной или ссылку. Например, предположим, у нас есть следующий пример —
int i = 17;
Мы можем объявить ссылочные переменные для i следующим образом.
int& r = i;
Прочитайте & в этих декларациях в качестве ссылки . Таким образом, прочитайте первое объявление как «r является целочисленной ссылкой, инициализированной в i», и прочитайте второе объявление как «s является двойной ссылкой, инициализированной в d». Следующий пример использует ссылки на int и double —
#include <iostream> using namespace std; int main () { // declare simple variables int i; double d; // declare reference variables int& r = i; double& s = d; i = 5; cout << "Value of i : " << i << endl; cout << "Value of i reference : " << r << endl; d = 11.7; cout << "Value of d : " << d << endl; cout << "Value of d reference : " << s << endl; return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Value of i : 5 Value of i reference : 5 Value of d : 11.7 Value of d reference : 11.7
Ссылки обычно используются для списков аргументов функции и возвращаемых значений функции. Далее следуют две важные темы, связанные со ссылками на C ++, которые должны быть понятны программисту на C ++:
C ++ поддерживает передачу ссылок в качестве параметра функции более безопасно, чем параметры.
Вы можете вернуть ссылку из функции C ++, как и любой другой тип данных.