Что выведет код Junior Указатели и ссылки обновлено
Что выведет: арифметика указателей и ссылки
Вопрос
Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.
#include <iostream>
int main() {
int a[] = {10, 20, 30, 40};
int* p = a;
int& r = a[2];
p += 1;
*p = 25;
r += 5;
int* q = &r;
std::cout << a[1] << ' ' << a[2] << '\n';
std::cout << (q - p) << '\n';
std::cout << *(a + 3) << ' ' << 3[a] << '\n';
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 25 35, 1, 40 40. p сдвинулся на a[1], запись p = 25 меняет a[1]. r это a[2], после += 5 там 35. q указывает на a[2], p на a[1]: разность в элементах 1.
Что выведет
25 35
1
40 40
Разбор
p сдвинулся на a[1], запись *p = 25 меняет a[1]. r это a[2], после += 5 там 35. q указывает на a[2], p на a[1]: разность в элементах 1. *(a + 3) и 3[a] это одно и то же выражение *(3 + a): 40.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Указатель «за последним»
Следующий вопрос
Что выведет: указатель по значению и по ссылке