Работа с указателями

Тест: задача без теста.

Реализуйте функции заданные следующими прототипами:

swap — обменивает значениями переменные адреса которых передали в функцию.

msort — сортирует значения переданных переменных по возрастанию. То есть после работы данной функции её левый аргумент будет указывать на минимальное из трёх значений и т.д. Возвращает функция максимальное из трёх значений.
Примечание 1. Даже если значения совпадают, максимум есть.
Примечание 2. Для обмена значений используйте вашу функцию swap.

info — выводит на экран информацию о переменной в формате: Адрес: {Адрес переменной}; Значение: {Значение переменной}

add — вычисляет сумму значений по указанным адреса и сохраняет результат по первому адресу, этот же адрес возвращается в качестве результата.
Примечание 1. Адрес есть адрес и не важно как его получили: у переменной (&a) или как результат функции (add(&a, &b)). Этот адрес можно передавать в любое место, где «ожидается адрес». Пример: info(&a) или info(add(&a, &b))
Примечание 2. Аналогично можно выполнять все доступные для адресов операции, не обращая внимание на то, откуда получен этот адрес.
Пример: cout << *add(&a, &b); // Выведет значение a. Т.к. мы разименовали адрес который вернула add (а он согласно описанию функции равен адресу первого аргумента).
Пример: *add(&a, &b) = 5; // Присвоили переменной a значение 5. Получили доступ к переменной a по её адресу.

Для демонстрации работы функций выполните следующие действия:

  1. Создайте в main 3 переменные типа int; Внимание! В main кроме этих 3-x больше переменных не создавать!
  2. Используя функцию info выведите информацию о этих переменных;
  3. Выведите на экран значение максимальной из 3-х переменных;
  4. Используя функцию add вычислите сумму всех переменных и выведите её на экран.

Формат ввода 
Ввод отсутствует.

Формат вывода 
Согласно заданию

Пример 1

ВводВывод
Адрес:0x22feac; Значение: 1;
Адрес:0x22fea8; Значение: 2;
Адрес:0x22fea4; Значение: 3;
Максимум: 3
Адрес:0x22feac; Значение: 6;