更改函数中对静态变量的引用值

时间:2015-01-25 04:55:41

标签: c++ function

考虑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

上面给出的代码段的输出如何证明是正确的?

2 个答案:

答案 0 :(得分:2)

您没有使用函数指针,只是将调用结果存储在引用中的fun

a静态变量,您正在初始化对该变量的引用。引用只是a的另一个名称,在这种情况下,这就是修改引用y的值的原因,您还修改了值a,这是静态的,这意味着它的值从呼叫到呼叫中保留。

答案 1 :(得分:2)

fun不是函数指针,它是一个返回int&的nullary函数。具体来说,它会返回对名为static int的{​​{1}}的引用。

那么你的程序是做什么的:

a