#include<cstdio>
/*
通过修改指针中的值可以正确交换两个数
对因为是对a,b地址内的数据作修改,实参的值也发生了改变
*/
void swap1(int* a,int* b){
int temp = *a;
*a = *b;
*b = temp;
}
/*
通过在函数内交换两个数的地址不能正确交换两个数
因为仅仅只是对形参做了修改,实参并没有改变
*/
void swap2(int* a,int* b){
int* temp = a;
a = b;
b = temp;
}
int main()
{
int a = 5,b = 8;
swap1(&a,&b);
printf("%d %d %d %d\n",a,b,&a,&b);
a = 5,b = 8;
swap2(&a,&b);
printf("%d %d %d %d\n",a,b,&a,&b);
return 0;
}
总结:如果要实现在函数内修改外部变量,最好的方式修改单元内容。