C++ 返回本地引用

C++ 返回本地引用,c++,reference,C++,Reference,运行代码时,尝试返回局部变量: #include<iostream> using namespace std; int &fun() { int x = 30; return x; } int main() { fun() = 10; cout << fun(); return 0; } 为什么编译器输出0和一些是30 返回一个引用,以引用一个局部变量,然后在范

运行代码时,尝试返回局部变量:

#include<iostream>
using namespace std;

int &fun()
{     
  int x = 30;      
  return x;    
}

int main()    
{   
    fun() = 10;   
    cout << fun();    
    return 0;    
}

<>为什么编译器输出0和一些是30

返回一个引用,以引用一个局部变量,然后在范围之外是C++中的未定义行为。
有时可能有效,有时可能无效。有时编译器可能会吃掉你的猫。

定义一些编译器。这是未定义的行为,ideone geeks4geeks认为这是非常难看的代码。用例是什么?除此之外,您可能还需要使用静态int x=30;。投票决定重新开放:重复是指针的例子。我一直都知道计算机是靠猫和比特运行的。