Skip to content

Commit 133a97e

Browse files
committed
Add references module
1 parent a31dc6f commit 133a97e

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/10_references.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <iostream>
2+
3+
int main() {
4+
5+
int a = 3;
6+
7+
// указатель
8+
int* pointer_to_a = &a; // указатель на 'a'
9+
10+
// ссылка: ссылка & на int
11+
int& reference_to_a = a;
12+
13+
// Ссылка - это почти указатель, но удобнее.
14+
// Различия:
15+
// 1. Не нужно использовать оператор разыменования * для получения доступа к данным по ссылке.
16+
// 2. Ссылка является неизменяемым типом данных, ее сразу необходимо инициализировать (нет nullptr).
17+
// 3. Ссылка - это alias (псевдоним) переменной.
18+
19+
// 1. Чтение данных по ссылке.
20+
int var = reference_to_a; // эквивалентно: int var = *pointer_to_a
21+
22+
// 2. Запись данных по ссылке.
23+
reference_to_a = 5; // эквивалентно: *pointer_to_a = 5
24+
25+
return 0;
26+
}
27+
28+
/*
29+
* Задания:
30+
* 1. Можно ли изменить адрес памяти, на который ссылается ссылка?
31+
* 2. Опишите ситуацию, когда использование ссылки целесообразно.
32+
* 3. В чем разница между & слева и справа от знака =? int& = ... vs. ... = &var
33+
*/

0 commit comments

Comments
 (0)