用指针写一个简单的交换函数
//交换函数
void Swap_err1(int a, int b)//error,按值传递,形参的改变不会影响实参
{
int tmp = a;
a = b;
b = tmp;
}
void Swap_err2(int* p1, int* p2)//只有指针,没有解引用(交换钥匙,没有开门)
{
int* tmp;
tmp = p1;
p1 = p2;
p2 = tmp;
}
void Swap_err3(int* p1, int* p2)//error,野指针
{
int* tmp;//随机值
*tmp = *p1;//报错或者崩溃
*p1 = *p2;
*p2 = *tmp;
}
void Swap(int* p1, int* p2)//必须传指针和解引用
{
int tmp;
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
void Fun_err(int n)//error
{
n = 100;//形参的改变不影响实参
}
void Fun(int* p)
{
*p = 100;
}
//交换两个变量的值
int main()
{
int a = 10;
int b = 20;
printf("%d,%d\n", a, b);
/*int tmp = a;
a = b;
b = tmp;*/
Swap(&a,&b);
printf("%d,%d\n",a,b);
int c = 0;
//scanf("%d",c);
//Fun(c);
Fun(&c);
printf("%d\n",c);
return 0;
}