在c++中实参和形参有3种结合方式,分别为:值传递、引用传递和地址传递。说法是否正确?
解析:
正如其他的普通的变量一样,形参的类型决定了形参与实参的结合方式。如果一个形参是引用类型,那么这个形参被绑定到实参上,成为实参的别名;如果形参不是一个引用类型,那么实参的值将被拷贝并赋予形参。
当一个形参是一个引用类型,我们说它对应的实参被“引用传递”或者说当前函数被“引用调用”。正如普通的引用一样,一个引用形参是其所绑定的实参的别名。
当一个实参被拷贝并赋予形参,形参与实参便从此分道扬镳,成为无关的两个对象。我们说这样的实参被“值传递”或者说当前的函数被“值调用”。
指针形参的行为和任何非引用类型一致。当我们拷贝一个指针,实际上是指针中所存储的地址值被拷贝。拷贝后,两个指针再无瓜葛,成为两枚独立的指针。
综合上述,题干中所谓的地址传递就是形参为指针的传递方式。因为它的形参和实参的结合是以拷贝地址值为手段完成的,所以指针传递是值传递的一个子集。