Предположим, что у меня есть следующий код:Попутный указатели как ссылки
swap (int&x, int&y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int* x;
int* y;
*x = 5;
*y = 6;
swap(*x, *y);
cout<< *x << *y;
}
Выход: 65
Так своп является успешным. Указатель х теперь указывает на 6, и у точек на 5.
Теперь, если я изменю своп вызов к этому:
swap(x, y);
Выход по-прежнему: 65
Что я не понимаю , Когда я это сделаю:
swap(*x, *y);
I указатели смежности x и y, а затем передают значения x и y в функцию в качестве ссылок. Но когда я делаю:
swap(x, y);
Я не почтительные указатели х и у, и вместо того, чтобы передать адрес памяти указателей х и у в функцию как ссылки.
Поскольку в первом случае я передавал значения, но во втором случае я передавал в адрес памяти, почему они возвращают те же значения и имеют одинаковое поведение?
Благодаря
'int * x;' Это определяет * неинициализированный * указатель на int. '* x = 5;' Это вызывает UB (неопределенное поведение), так как программа записывает на некоторый случайный адрес памяти, который он не имеет. – dxiv
При публикации кода, пожалуйста, разместите всю свою программу –