60 lines
No EOL
2.5 KiB
C++
60 lines
No EOL
2.5 KiB
C++
#include <iostream>
|
||
using std::cout, std::endl;
|
||
|
||
|
||
/*
|
||
В C++ вводится понятие нового типа под названием Ссылка
|
||
|
||
Ссылку можно рассматривать как новое имя для объекта.
|
||
Ссылку также можно рассматривать как удобный указатель, который автоматически разыменовывается
|
||
(На самом деле под капотом ссылка и является указателем)
|
||
|
||
Ссылка объявляется с помощью значка & после имени типа.
|
||
Не стоит путать & используемый при объявлении ссылки с & используемым для нахождения адреса переменной.
|
||
Это разные &
|
||
|
||
|
||
Пусть есть переменная a
|
||
int a = 10;
|
||
Давайте создадим указатель и ссылку на эту переменную и увеличим её на 1 с помощью указателя/ссылки
|
||
|
||
Используем указатель: Используем ссылку:
|
||
int* p = &a; int& r = a;
|
||
*p += 1; r += 1;
|
||
|
||
|
||
Ссылкой пользоваться удобно, так как:
|
||
|
||
1) При создании ссылки нам не нужно передавать ей адрес
|
||
Просто передаём ей саму переменную, а ссылка уже сама находит её адрес
|
||
|
||
2) Не нужно её разыменовывать, она всегда разыменовывается сама
|
||
|
||
*/
|
||
|
||
int main()
|
||
{
|
||
int a = 10;
|
||
|
||
int& r = a;
|
||
r += 1;
|
||
|
||
cout << a << endl;
|
||
}
|
||
|
||
|
||
/*
|
||
Задачи:
|
||
|
||
1) Используйте ссылку r, чтобы увеличить a в 2 раза
|
||
Проверьте, как изменилась a, напечатав её
|
||
|
||
|
||
2) Используйте ссылку r, чтобы присвоить a число 100
|
||
Проверьте, как изменилась a, напечатав её
|
||
|
||
|
||
3) Создайте переменную b типа float, равную 1.5
|
||
Создайте ссылку на b и используйте эту ссылку, чтобы возвести b в квадрат
|
||
|
||
*/ |