1.Swap函数交换两个整数的值的错误做法1:只交换了两个数的形参
void Swap_error1(int a,int b)
{
int tmp = a;
a = b;
b = tmp;
}
这种交换方式只交换了Swap函数里边儿a,b的值,而主函数中的a和b并没有发生改变 ,这种情况属于交换失败
2.Swap函数交换两个整数的值的错误做法2:只交换了形参的指向
void Swap_error2(int *p1,int *p2)
{
int *tmp = p1;
p1 = p2;
p2 = tmp;
}
这种情况只交换了形参的指向,而实际上主函数内的两个整数值并未发生改变
可以理解为只只交换了两个房间的钥匙,但是两把钥匙仍然只能开对应的房间,所以两个房间内容并未被改变
3.Swap函数交换两个整数的值的错误做法3:出现野指针(悬挂指针)
void Swap_error3(int *p1;int *p2)
{
int *tmp = *p1;
*p1 = *p2;
*p2 = *tmp;
}
*tmp 就属于野指针,*tmp就是个局部变量 为一个随机变量值
所以野指针并不能访问导致程序崩溃
4.Swap函数交换两个整数的正确做法:通过子函数改变父函数中的值(进行传指针解引用)
void Swap(int *p1,int *p2)
{
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
交换成功,通过p1和p2访问到a和b的内存空间 从而实现a和b的交换