#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?