Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么静电必须存在?_C++_Static - Fatal编程技术网

C++ 为什么静电必须存在?

C++ 为什么静电必须存在?,c++,static,C++,Static,谁能帮我澄清一下这段代码吗? 我已经做了一些研究来理解引用和static,但是我仍然不明白static在这个例子中做了什么。为什么它必须首先存在呢?如果缺少static,编译器会发出警告,程序可能会崩溃,为什么 int & foo(int b) { static int a = 7; a += b; return a; } int main() { int & x = foo(0); int & y = foo(1);

谁能帮我澄清一下这段代码吗? 我已经做了一些研究来理解引用和static,但是我仍然不明白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);

}
静态局部变量将具有完整程序的生命周期。对它的引用永远不会失效

否则,非静态局部变量一旦超出范围(函数返回时会发生这种情况),就会消失,并且不能引用不存在的对象


关于静态局部变量及其初始化的一个重要注意事项是:在第一次调用函数时,它们只初始化一次。该变量不会在以后的调用中初始化,但会保留它的最后一个值。

该函数返回对a的引用。如果没有static,则堆栈上有一个,因此函数返回对什么的引用?什么警告?阅读后你到底不明白什么?可能是重复的,但我不太确定:非常相关:也接近重复: