先看以下正确的例子
void swap ( int *px, int *py)
{
int temp;
temp = *px; /*间接取*/
*px = *py; /*间接取,间接存*/
*py = temp; /*间接存*/
}
int main(void)
{
int a =2, b = 3;
swap ( &a, &b);
printf("a=%d,b=%d",a,b);
return 0;
}
运行的结果为
但是,如果将swap函数变为
void swap(int *px, int *py)
{
int *temp;
temp = px;
px = py;
py = temp;
}
便不能进行交换
事实上,当我们进行调试的时候会发现第二种方法交换的只是两个数所在的地址,并没有交换数值。
相当于,换了门牌号,但是住在门里的人是没有变的。