关于C++引用的问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include <iostream>

using namespace std;

int & fun(int a){

    int & r = a;
    return r;
}

int main()
{
    int a;
    a = 1;

    int & r = fun(a);
    cout << r << endl;
    cout << r << endl;

    return 0;
}
运行结果及报错内容

第一个打印是1,没错。
第二个打印是21845的随机值。

我的解答思路和尝试过的方法

为什么第二个打印不是1?

我想要达到的结果

改成 int r = fun(a);


 
#include <iostream>
 
using namespace std;
 
int fun(int a){
 
    int r = a;
    return r;
}
 
int main()
{
    int a;
    a = 1;
 
    int r = fun(a);
    cout << r << endl;
    cout << r << endl;
 
    return 0;
}