c++返回值为引用

与返回原值的区别

引用

return的地址和返回值的地址是同一个,也就是占据着同一块内存,因此要求此时return的东西必须是一个实体(有存储地址),不能是一个作用域仅在函数中的局部变量

例如  int&  fun()

{int c;
return c;}     a=fun();

就会报错。因为a找不到它应该存在的地址在哪里

int&  fun(int c)
{
return c;}     a=fun();   这样是正确的,a有了一个实实在在的地址,即c所在的位置,a,c指向同一处

返回原值

再开辟一块内存用于存储临时变量,最终a取到的是临时变量的地址(可能会造成地址浪费)

例如

int fun()
{int c;
return c;}     a=fun();  此时会开辟一块临时变量内存放c,a最后的地址和临时变量的相同,能取到c的值。

int  fun(int c)
{
return c;}     a=fun();
 a和c不在一起,因为又 开辟一块临时变量内存放c,a最后的地址和临时变量的相同,而不是与原c相同。

猜你喜欢

转载自blog.csdn.net/weixin_42165786/article/details/80721555
今日推荐