请c语言高手们赐教:什么时候应注意函数实参河和形参的单向传递问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:53:26

C语言中有两种传递方式,一个是值传递,另一个是地址(指针)传递。

值传递就是单向传递。它只给从实参传递给形参,而形参经过改变后不会传递给实参,对函数而言,就是参数经过主调用函数传递给了被调用函数,而我们知道,被调用函数除了用return语句返回一个值外,其余的值就不可以返回了。所以说值传递是单向传递。

地址传递则解决了值传递只能返回一个值的尴尬局面。地址传递通过把传入参数的地址以指针方式传递给形参,进而直接对传入参数的内在单元进行修改,所以,这种传递方式可以彻底改变传入参数,不受被调用函数只能返回一个值的限制。

由上面,所以,当你希望通过调用函数并返回多个数值时就要用地址传递的方式,其余就可以选用值传递了。

下面这道题采用值传递显然达不到设计者的要求。

void f(int v,int w)
{
int t;
t=v,v=w,w=t;
}
main()
{
int x=1,y=3,z=2;
if(x>y) f(x,y);
else if (y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d\n",x,y,z);
}

因为上面的程序采用了值传递,而传入的参数经f函数排大小后,不可能再传回去了,这就是单向传递。

希望,编写时候注意。