函数返回引用 ,引用传递和指针传递

总结:
函数的返回值用于初始化在调用函数时创建的临时对象。
如果不是引用:会将函数返回值复制给临时对象
当返回非引用类型,其返回值可以是局部对象,也可以是求解表达式的结果
返回引用类型:没有复制返回值,返回的是对象本身,千万不要返回局部对象的引用,不要返回指向局部对象的指针
返回引用时,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数,同时可以利用全局变量,作为返回。还可以返回对象(不是在当前返回引用这个函数中实例化的对象),原因是类成员函数的参数表中都有一个隐含的this指针,指向当前对象的地址。
返回值为引用时,返回的是地址。
返回值不是引用时,编译器会给返回值分配一块内存。
返回引用:调用程序将直接访问返回值。
通常引用将指向传递给函数的引用,因此调用函数实际上是直接访问自己的一个变量
返回一个对象时,一般用引用作为返回值。
“sizeof引用”:得到的是所指变量(对象)的大小
“sizeof指针”:得到的是指针本身(所指向的变量或对象的地址,这句话可以不看,比较不好理解,可以就理解成是指针本身大小)的大小

引用传递和指针传递是不同的,虽然它们都是在被调函数栈空间上的一个局部变量,但是任何对于引用参数的处理都会通过一个间接寻址的方式操作到主调函数中的相关变量。而对于指针传递的参数,如果改变被调函数中的指针地址,它将影响不到主调函数的相关变量。如果想通过指针参数传递来改变主调函数中的相关变量,那就得使用指向指针的指针,或者指针引用。

**可以建立指针变量的引用如
int i=5;
int p=&i;
int * &pt=p;//建立指针变量p的引用pt
引用变量pt代表一个int 类型的数据对象(即指针变量)

引用可以参看:http://www.cnblogs.com/floatedclouds/archive/2011/10/13/2209917.html
** https://blog.csdn.net/Listening_music/article/details/6921608**
https://blog.csdn.net/willian0621/article/details/12838157
https://blog.csdn.net/Xiao__Tian__/article/details/51814617

原文地址:https://www.cnblogs.com/ymd12103410/p/9592904.html