返回信息流请教一下,既然在用值传递调用函数时,实参的值是不会改变的,那么值传递的意义在哪里呢?
我们应用值传递解决什么问题呢?
请教大牛!
这是一条镜像帖。来源:北邮人论坛 / cpp / #37201同步于 2010/3/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
函数调用时的值传递
sichao
2010/3/29镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
又不是一定要改实参的值……
比如你一个sin(x)
传递个x进去你不用改x的值的吧,只要知道结果的吧
怎么会没意义
【 在 sichao (寻梦) 的大作中提到: 】
: 请教一下,既然在用值传递调用函数时,实参的值是不会改变的,那么值传递的意义在哪里呢?
: 我们应用值传递解决什么问题呢?
: 请教大牛!
: ...................
这个问题其实很简单。
例如,int example(int a,int b)
{
a-=1;
b-=2;
}
调用这个函数时,根据C调用规则从右至左压入堆栈,先将b压入堆栈,再将a压入堆栈,再调用这个函数,对a和b的计算都是对保存在堆栈中的值进行计算,上例中的函数修改的只是参数复制到堆栈中的副本,修改的是本地副本,当然不会对原值有任何改变啦~~
厄,楼主问的是值传递的意义呀,我就看见值传递就开始回帖了,囧
值传递的意义不晓的。。。
不过IA32的CPU是栈密集过程链接,我猜应该和这个有关系吧,因为CPU就是这样设计的,所以c调用规则就是这样规定的?