Что выведет код Junior Указатели и ссылки обновлено
Что выведет: указатель по значению и по ссылке
Вопрос
Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.
#include <iostream>
void f(int* p) { p = nullptr; }
void g(int*& p) { p = nullptr; }
void h(int* p) { *p = 7; }
int main() {
int x = 1;
int* p = &x;
f(p);
std::cout << (p != nullptr) << '\n';
h(p);
std::cout << x << '\n';
g(p);
std::cout << (p == nullptr) << '\n';
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 1, 7, 1. f получает копию указателя и обнуляет копию: p в main не изменился, печатается 1. h меняет объект по адресу: x == 7. g получает ссылку на сам указатель и обнуляет его: печатается 1.
Что выведет
1
7
1
Разбор
f получает копию указателя и обнуляет копию: p в main не изменился, печатается 1. h меняет объект по адресу: x == 7. g получает ссылку на сам указатель и обнуляет его: печатается 1.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет: арифметика указателей и ссылки
Следующий вопрос
Как читать объявления с const