gpt4 book ai didi

c++ - 通过多个函数调用初始化局部静态变量

转载 作者:行者123 更新时间:2023-11-30 04:51:44 25 4
gpt4 key购买 nike

int f(int &g){
static int a=g;
a+=1;
return a;
}

int main()
{
int g=0;
int a=f(g);
g=10;
a=f(g);
cout<<a;
return 0;
}

以上代码给出了输出 2。我的猜测是应该是 11。

我明白 main 函数中的 a 与 f 函数中的不一样。所以当 g=0 时,我相信 f 中的 a 会是 1。那么当g=10时,应该是11,在main中给出a=11。为什么不是这样呢?谢谢!

最佳答案

您在这里误解了 static 关键字。当局部变量被声明为static 时,它会被初始化一次。在函数内部,这是 then 函数第一次被调用的时候。你首先调用这个函数在

int g=0;
int a=f(g);

f 中的局部变量 a 因此被初始化为零,然后递增。稍后,您第二次调用 f

g=10;
a=f(g);

但由于局部变量已经初始化,所以不会被覆盖。取而代之的是第二次递增,产生 2 的值。

关于c++ - 通过多个函数调用初始化局部静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54722917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com