参数传递按值传递

来源:互联网 发布:手机怎么进淘宝试衣间 编辑:程序博客网 时间:2024/05/01 08:23

这篇文章里面是c++ primer 里面的

所有的函数都使用在程序运行栈(run-time stack)中分配的内存区。该存储区一直保持与该函数相关联,直到函数结束为止。那是存储区将自动释放以便重新使用。该函数的整个存储区被称为活动记录(activation record) 

系统在函数的活动记录中为函数的每个参数都提供了存储区。参数的存储长度由它的类型来决定。参数传递是指用函数调用的实参值来初始化函数参数存储区的过程。
C++中参数传递的缺省初始化方法是把实参的值拷贝到参数的存储区中。这中称为按值传递(pass-by-value)

按值传递时,函数不会访问当前调用的实参,函数处理的是它本地的拷贝,这些拷贝被存储在运行栈中,因此改变这些函数的值不会影响实参的值,一旦函数结束,函数的活动记录将 从栈中弹出,这些局部值就消失了。

在按值传递的情况下,实参的内容没有被改变,这意味着程序员在函数调用时无需保存和恢复实参的值,如果没有按值传递机制,每个没有被声明为const的实参就可能会随时随每次函数调用而被改变,按值传递的危害最小,因此用户做的工作也最少,毫无疑问按值传递时参数传递最合理的缺省机制。