C++参数传递:传值和传引用
C++不允许函数return数组或多个对象,但很多时候,确实需要一个函数传回多个值。这时就希望函数直接对外部的变量或指针做操作,绕过return来达到目的。引用的概念曾经一直是盲区,觉得&仅可能是取地址符,&a
就是取a
的地址的意思。由此导致很多错误。
引用
在《C++ Primer》(中文第五版,45~46页)中讲到,引用其实是给变量取了一个别名:
int a = 1;
int &ra = a; // ra是a的另一个名字
这时可以讲,ra
和a
指的完全是一个东西,任何对ra
的操作都是对a
的操作。在初始化的过程中,a的值并没有被复制。引用在定义的时候就必须被初始化,并且之后不能重新赋值。
就像*
号在定义和声明过程中代表变量是一个指针,但在赋值等过程中代表解引用符来访问指针所指的对象一样,&
符号在定义引用时,并不是取地址的意思。
函数传值
传值参数
当初始化一个非引用类型的变量时,初始值被拷贝给变量。此时,对变量的改动不会影响初始值。
也就是说,当一个函数被调用时