void Swap_err1(int a, int b)//error,形参交换,实参没有交换
{
int tmp = a;
a = b;
b = tmp;
}
void Swap_err2(int* p1, int* p2)//error,没有解引用
{
int* tmp;
tmp = p1;
p1 = p2;
p2 = tmp;
}
void Swap_err3(int* p1, int* p2)//野指针,没有访问权限
{
int* tmp;
*tmp = *p1;//崩溃
*p1 = *p2;
*p2 = *tmp;
}
void Swap(int* p1, int* p2)
{
int tmp;
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
int main()//实现两个数的交换
{
int a = 20;
int b = 40;
Swap(&a,&b);
printf("%d,%d\n",a,b);
return 0;
}
需要注意的是,如果一个A函数想要调用一个B函数来修改A中实参的值,A必须传指针,B必须解引用。