当前位置:  开发笔记 > 编程语言 > 正文

通过引用返回局部变量

如何解决《通过引用返回局部变量》经验,为你挑选了1个好方法。

我有以下代码:

        int& func(int i){
          int *p = &i;
          return *p;
        }

        int& func2(int i){
          vector v;
          v.push_back(i);
          return v[0];
        }

        int & func3(int i){
          array arr;
          arr[0] = i;
          return arr[0];
        }

        int& func4(int i){
          int j = i;
          return j;
        }

    int main(){

      cout<

调用func它没关系,因为虽然p是本地的*p是i,我生活在全局范围内(?).调用func2返回0,这对我来说没有意义,我希望有一个分段错误,因为v是一个局部向量...调用func3返回正确的值,这也没有意义,原因与以上.调用func4最终做了我所期望的给出segmentatioun错误

有人可以帮助我理解深层发生的事情吗?为什么向量和数组工作,因为它们被声明为静态?实际上考虑到所有函数都返回引用,我预计会出现分段错误,因为向量和数组是本地对象,一旦函数结束就应该删除它们.

很感谢



1> SergeyA..:

那里发生了未定义的行为.通过引用返回本地参数或变量是未定义的行为,与向其返回地址的方式相同.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有