#include <iostream>
using namespace std;
int f() 
{
    int x=1;
    return x;
}
int main()
{
    const int& s = f();
    cout << s << endl;
}
#include <iostream>
using namespace std;
int x=1;
int &f() 
{
    return x;
}
int main()
{
    const int& s = f();
    cout << s << endl;
}
Both of these programs are correct. But when I use
int &f() 
{
    int x=1;
    return x;
}
instead of
int f() 
{
    int x=1;
    return x;
}
I get an error:
main.cpp: In function 'int& f()':
main.cpp:6:13: warning: reference to local variable 'x' returned [-Wreturn-local-addr]
     int x=1;
         ^
bash: line 7: 14826 Segmentation fault (core dumped) ./a.out
What's wrong?
 
    