1.传递引用给函数和传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其对应的目标 对象(在主调函数中)的操作。
2.使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;
而使用一般变量传递函数的参数,当发生函数的调用时,需要给形参分配存储单元,形参变量是实参变量的副本; 如果传递的是对象,还将调用拷贝构造函数。
因此,当参数传递的数据较大时,使用引用传递参数 比用一般变量传递参数的效率和所占空间都好。
3.使用指针作为函数的参数虽然也能达到与使用引用相同的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用“*指针变量名”的形式进行运算
(
"*"的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为“解引用”。也就是说,解引用(*号)是返回内存地址中对应的对象。
比如int a=10; int *p=&a;//如果直接p=&a;p是取地址的符号,则p表示地址,再加*号,表示返回内存地址中对应的对象。
cout<<*p<<endl; 输出a的值,就是解引用操作。
),
这很容易产生错误且程序可读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
(参考:!!-阳光-!!的blog和解引用的百度百科)