有人可以为我澄清这段代码吗? 我已经做了一些研究,以了解引用和静态信息,但是在此示例中,我仍然不了解静态信息的作用。以及为什么它必须首先存在(如果缺少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);
}
答案 0 :(得分:7)
static
局部变量将具有完整程序的生命周期。对它的引用将永远不会失效。
否则,非静态局部变量一旦超出范围(将在函数返回时发生),它们将“消失”,并且您将无法引用不存在的局部变量。
关于static
局部变量及其初始化的重要说明:仅在函数第一次调用时才一次对其进行初始化。该变量将不在以后的调用中被初始化,但将保留其具有的最后一个值。