では、お前のソースより低レベルなものを書こう。
だから、解説しろ。能書きは要らん。面倒なところは省く。

int *a=10;
int *b=20;
int **tmp = &a;
a = &b;
b = *tmp;
a = *tmp;

aとbの値は?