为什么必须要有静电力?

Mei*_*eio 0 c++ static

谁能为我澄清这段代码?我已经做了一些研究,以了解引用和静态信息,但在此示例中,我仍然不了解静态信息的作用。以及为什么它必须首先存在(如果缺少static,编译器会发出警告,程序可能会崩溃,为什么?)。

int & foo(int b)
{
    static int a = 7;


    a += b;
    return a;
}

int main() {

    int & x = foo(0);
    int & y = foo(1);
    cout << (x + y);

}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 7

一个static局部变量都会有完整的程序的寿命。对其的引用将永远不会失效。

否则,非静态局部变量一旦超出范围(在函数返回时就会发生),它们将“消失”,并且您将无法引用不存在的局部变量。

关于static局部变量及其初始化的重要说明:在函数的第一次调用中,它们仅被初始化一次。该变量将不会在进一步调用时初始化,但会保留其具有的最后一个值。