Функция подкачки не работает
Почему этот метод обмена не работает
void swap(int *x,int *y){
int *temp;
temp = x;
x = y;
y = temp;
}
Зачем? Я думаю, что это так же, как обычный..
3 ответа
C передает аргументы функции по значению: вы меняете только копии указателей.
Если вы хотите поменять местами два int
:
void swap(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
x
а такжеy
ведут себя так же, как локальные переменные.ваш код поменялся
x
а такжеy
значения, а не значения, на которые они указывают.
Вы меняете адреса, хранящиеся во временных указателях в стеке, а не на значения, хранящиеся в памяти, на которую они указывают. Вы хотите сделать это вместо этого:
void swap(int *x,int *y){
int temp = *x;
*x = *y;
*y = temp;
}