#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 в квадрат

*/