Простая функция свопинга ... почему этот не поменяется? - PullRequest
11 голосов
/ 01 октября 2010

Я новичок в C и все еще пытаюсь понять концепцию указателей. Я знаю, как написать функцию подкачки, которая работает ... Меня больше волнует, почему эта конкретная функция не работает.

void swap(int* a, int* b)
{
 int* temp = a;
 a = b;
 b = temp;
}

int main()
{
 int x = 5, y = 10;
 int *a = &x, *b = &y;
 swap(a, b);
 printf(“%d %d\n”), *a, *b);
}

Ответы [ 12 ]

0 голосов
/ 07 апреля 2017

Вам необходимо отправить адреса a и b для функции подкачки, поэтому при вызове функции подкачки вы должны вызывать задницу подкачки (& a, & b) Чтобы вы передали адрес и изменили адрес

0 голосов
/ 01 октября 2010

Ответ zildjohn1 - самый простой и понятный способ сделать это. Однако если вы настаиваете на обмене указателями, вам нужно передать указатель на указатель, поскольку сам указатель передается по значению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...