* Разыменование указателя, это все равно, что возвращать указанную переменную.Таким образом, сохранение значения в разыменованном указателе приведет к тому, что это значение будет сохранено в памяти, на которую он указывает.Так что просто разыменуйте оба указателя и работайте исключительно с числами, нет необходимости менять сами указатели.
void change(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
Действительно, потому что вы использовали вызов по значению для аргументов функции, заменяющейАдреса памяти в указателях внутри «change» вообще не будут влиять на переменные внутри main.