swap1(int x, int y) //传值调用
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
swap2(int* x, int* y) //传址调用
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a, b;
a = 10;
b = 20;
swap1(a, b);
printf("a=%d, b=%d\n", a, b); //输出 a=10, b=20
swap2(&a, &b);
printf("a=%d, b=%d\n", a, b); //输出 a=20, b=10
}
//swap1中形参x和y在调用函数时只是实参a和b的一份临时拷贝,它有自己的地址,故不能改变外部变量a和b的值,达不到交换a和b的作用
//swap2是传址调用,把a和b变量的地址传给函数swap2,在swap2函数中操作时直接改变了a和b变量所在地址的值,从而达到交换a和b的值的作用
形参:即自定义函数中括号内需要的参数,它可以是常量、变量、表达式或函数,但必须是
一个确定的值,形参在函数调用的时候才会为其分配内存,在调用结束后销毁内存。
实参:即函数中实际的值,如上述函数中a和b就是实参。
原文:https://blog.51cto.com/14829443/2532387