首页 > 其他 > 详细

当函数返回值为引用时

时间:2014-04-06 20:15:39      阅读:598      评论:0      收藏:0      [点我收藏+]

当返回盏变量

   不能成为其它引用的初始值。(可以作为变量的初始值,但这样也就没有必

   要返回局部变量了,返回这个局部变量的值就可以了。)

   不能作为左值使用。

当返回静态变量或全局变量

    可以成为其他引用的初始值

    可以作为右值使用,也可以作为左值使用

int& f()

{

    static int a=0;

    return 0;

}


int &g()

{

    int a=0;

    return a;

}


int main()

{

    int a=g();

    int& b=g();

    f()=10;

    printf("a=%d\n",a);

    printf("b=%d\n",b);

    printf("f()=%d\n",f());

    printf("press enter to ...");

    getchar();

    return 0;

   

}


引用b是g函数中的局部变量a的别名,代表了局部变量a的内存空间。g函数调

用结束之后,这个空间被释放,引用b是已经被释放了的内存空间的别名。所以打印

出的b的结果是无法预知的。

这种情况,相当于返回了局部变量的地址,当然会有问题。

函数f()返回的是一个静态局部变量的引用,因此,它可以作为左值来使用。


本文出自 “Linux运维” 博客,请务必保留此出处http://2853725.blog.51cto.com/2843725/1391172

当函数返回值为引用时,布布扣,bubuko.com

当函数返回值为引用时

原文:http://2853725.blog.51cto.com/2843725/1391172

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!