函数的参数传递(parameter passing)有三种类型:实参值传递(argument value passing)、指针传递(pointer passing)和引用传递(reference passing)。其中实参值传递和指针传递本质上是相同的,传递的是变量的。引用传递的本质是传递地址,故称为地址传递。(这些是我自己归纳的,不是很准确,关键在于理解)
一、实参值传递
所谓实参值传递,就是变量名作为函数的实参(argument)和形参(parameter)。
当函数调用的时候,实参的值被复制,然后赋给形参。也就是说,形参是实参的一个副本(copy)。
这个复制的过程是由形参所属的数据类型的复制构造函数(copy constructor)完成的,在函数运行结束后,形参所属的数据类型的析构函数负责释放该形参。
形参作为一个局部变量,它的作用域在函数内部,一旦跳出了函数,形参的值不被保存,这样在函数体内就不能改变实参的值。当函数返回时,形参的值不会被复制到对应的实参中去。
整个传递过程是单向的。在调用函数时,形参和实参处于不同的存储单元。