void swap(int *a, int *b)
{
int t;

t = *a;
*a = *b;
*b = t;
}


void swap(int *a, int *b)
{
int *t;

t = a;
a = b;
b = t;
}

上の関数だと引数の値が入れ替わるのに、
下の関数だと入れ替わらないのはなぜですか?