2.2 Указатели и ссылки

2.2.1 Обмен значений

Условие

Даны два целых числа a и b. Реализуйте функцию void swap_values(int *a, int *b), которая меняет местами значения двух переменных, переданных ей через указатели. Обмен выполняйте внутри функции, изменяя объекты по переданным адресам. Функция не должна выполнять ввод или вывод. Переданные указатели указывают на существующие переменные типа int и не равны нулевому указателю.

В функции main прочитайте два числа в отдельные переменные, вызовите swap_values(&a, &b) и выведите значения переменных после вызова. Использование готовых функций обмена, включая std::swap, запрещено. Решение через указатели можно написать как на C, так и на C++.

Опционально, для знакомых со ссылками в C++: вместо варианта с указателями реализуйте функцию void swap_values(int &a, int &b) и вызовите её как swap_values(a, b). Значения исходных переменных также должны изменяться внутри функции. Этот вариант доступен только в C++ и не является обязательным.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Стандарты: C11 / C++17.

Входные данные

Два целых числа a и b в одной строке через пробел. Оба числа находятся в диапазоне 32-битного знакового int: −2³¹ ≤ a, b ≤ 2³¹ − 1.

Выходные данные

Два целых числа в одной строке через пробел — значения переменных a и b после обмена. Первым выведите исходное значение b, вторым — исходное значение a.

Примеры

Вход 1
5 -2
Ожидаемый выход
-2 5
Вход 2
7 7
Ожидаемый выход
7 7
Вход 3
-2147483648 2147483647
Ожидаемый выход
2147483647 -2147483648

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.