Fonction d'échange simple ... pourquoi celui-ci ne change-t-il pas?

Je suis nouveau sur C et encore en essayant de saisir la notion de pointeurs. Je sais comment écrire une fonction d'échange qui fonctionne...je suis plus concerné pourquoi celui-ci en particulier ne fonctionne pas.

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);
}

source d'informationauteur Adam Soffer