微笑和沉默是好的:传值调用对行参的修改,不会影响实参的值,但行参要返回值给实参啊不是还是改了吗

来源:百度文库 编辑:高考问答 时间:2024/05/06 01:22:27
如果行参不返值的话,那作为被调用函数又有什么意义呢?返回值不是要把实参的值给覆盖吗?难道他是保存在另一个地址里

返回值和参数没有任何关系

a = f(b);

int f(int x);

这里 b 是实参,x 是形参,a 从 f(b) 中得到返回值。实参和形参是对应的,返回值是另外单列的。

注意,通常说"形参"而不是"行参",是"形式上的参数"的意思.
你可能没有搞清楚"返回值"的意思,严格意义上的返回值是指在 return 关键字后面的表达式的值,被调函数运行完毕后,如果又返回值,则将这个返回值"扔给"主调函数(而不管主调函数是否接收它),例如主调函数里写了a=fun(c,d);其中c,d是实参,而fun(c,d)确实返回了一个值的话,a就将被这个返回值所覆盖,同时c,d的值不会被改变;但是如果主调函数不接收返回值,只写了fun(c,d);则c,d的值不会被改变,a的值更不会被改变
这样说应该能明白了吧?

那个返回值只是一个拷贝,并不影响实参本身

返回值的地址和实参的地址没有关系,不会覆盖,不知道你为什么会认为是一个,那如果一个函数有两个实参,一个返回值,你让它覆盖哪个?

我们就拿数学上的函数来理解,y=f(x)=x+1这个函数,x就可以看成形参,比如我们要求f(2)的时候,这个2就是个实参,结果的3就是返回值,也就是说返回值是传给y的,不关x什么事。