C语言中多次调用函数时静态局部变量只赋值一次

物理原理是什么?例如这个函数中main(){inti;voidf();for(i=1;i<=5;i++)f();}voidf(){staticintj=0;++j;pri... 物理原理是什么?
例如这个函数中

main()
{
int i;
void f();
for (i=1;i<=5;i++)
f();
}
void f()
{
static int j=0;
++j;
printf("%d\n",j);
}
当再次调用函数f()时为什么有这句 static int j=0; 为什么就没有赋值了 物理原理是什么?
展开
 我来答
百度网友9f268f3
2010-09-14 · TA获得超过477个赞
知道小有建树答主
回答量:167
采纳率:50%
帮助的人:107万
展开全部
当编译器处理该代码时,遇到静态变量的初始化,就会在函数f外单独生成一条命令,给j赋值为0. 这些命令甚至会在main函数调用以前就执行。而在函数中,第一条语句实际上不是j=0,而是++j。

这样,使得静态局部变量只初始化一次。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式