原理:在这里将调用函数换个名称:父函数,被调用函数称为:子函数,放便区别:
子函数的改变要想修改父函数的值,必须满足:
(1)传指针
(2)解引用(*)
错误调用代码1:
#include<stdio.h>
void Swap(int a,int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 10;
int b = 20;
Swap(a,b);
printf("%d,%d\n",a,b);
return 0;
}
错误调用代码2:
#include<stdio.h>
void Swap(int *p1,int *p2)
{
int *tmp;
tmp = p1;
p1 = p2;
p2 = tmp;
}
int main()
{
int a = 10;
int b = 20;
int *p1 = &a;
int *p2 = &b;
Swap(p1,p2);
printf("%d,%d\n",a,b);
return 0;
}
错误调用3
#include<stdio.h>
void Swap(int *p1,int *p2)
{
int *tmp;
*tmp = *p1;
*p1 = *p2;
*p2 = *tmp;
}
int main()
{
int a = 10;
int b = 20;
int *p1 = &a;
int *p2 = &b;
Swap(p1,p2);
printf("%d,%d\n",a,b);
return 0;
}
正确调用1:
#include<stdio.h>
void Swap(int *p1,int *p2)
{
int tmp;
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
int main()
{
int a = 10;
int b = 20;
int *p1 = &a;
int *p2 = &b;
Swap(p1,p2);
printf("%d,%d\n",a,b);
return 0;
}
正确调用2:使用传引用,作用:在子函数中可以直接修改父函数中的变量。
#include<stdio.h>
void Swap(int &a,int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 10;
int b = 20;
Swap(a,b);
printf("%d,%d\n",a,b);
return 0;
}