The right way:
void swap(int *p, int *q) { int temp = *p; // change the actual values of a and b *p = *q; *q = temp; } int main(void) { int a = 5, b = 7; swap(&a, &b); printf("a = %d, b = %d\n", a, b); // a and b now successfully swapped return 0; }