>>300
void swap(int *a, int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
で同じポインタを swap に渡した場合はできないんじゃぁ?