考虑C ++中的以下代码片段:
#include <iostream>
using namespace std;
int &fun()
{
static int a = 10;
return a;
}
int main(int argc, char const *argv[])
{
int &y = fun();
y += 30;
cout << fun();
return 0;
}
输出:40
上面给出的代码段的输出如何证明是正确的?
答案 0 :(得分:2)
您没有使用函数指针,只是将调用结果存储在引用中的fun
。
a
是静态变量,您正在初始化对该变量的引用。引用只是a
的另一个名称,在这种情况下,这就是修改引用y
的值的原因,您还修改了值a
,这是静态的,这意味着它的值从呼叫到呼叫中保留。
答案 1 :(得分:2)
fun
不是函数指针,它是一个返回int&
的nullary函数。具体来说,它会返回对名为static int
的{{1}}的引用。
那么你的程序是做什么的:
a