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