Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
#include <iostream>
int main() {
int a = 1;
int b = 2;
int& r = a;
int* p = &a;
r = b;
p = &b;
*p = 3;
std::cout << a << ' ' << b << '\n';
}2 3
- Ждать
1 3:r = b;не перепривязываетrкb, а записывает значениеbвa—rпо-прежнему обозначаетa. - Ждать
3 2: в отличие от ссылки, указатель можно перенаправить, поэтому послеp = &b;запись*p = 3;меняетb.
- Почему указатель может ни на что не указывать, а ссылка — нет?
- Когда стоит передать в функцию указатель, а не ссылку?