c语言,177题,答案是 7 8 9 8和9是怎么算的

 我来答
帛铃之春姝
2020-04-13 · TA获得超过3868个赞
知道大有可为答主
回答量:3091
采纳率:28%
帮助的人:192万
展开全部
传到函数f的a的值永远都是2,这点容易理解,现在关键就是b和c的值了
对于b,它是f()函数内部的一个局部变量,所以每次调用的时候,它的初始值都是0
执行b++之后,就变成了1,也就是每次计算a+b+c时都是1.
对于c,它是f()函数内部的局部静态变量,也就是它的作用域仅限于f()函数内部,
但由于它静态变量的特性,所以它只被初始化一次,也就是编译的时候就初始好了,初始值是3,以后每次调用f()的时候,就不会再初始化它了,它的值保存在静态区,下次调用f()的时候,会继续使用静态区保存的值。
所以第一次调用f()执行c++之后,它的值就变成了4,
结果就是2+1+4=7
第二次调用f()执行c++,之前,它的值是4(保存在静态区不会因为函数结束而被系统回收),累加完就是5了,结果当然就是2+1+5=8,
第三次就类似第二次,所以结果就是9
关键是要理解静态变量的意思,存放在内存静态区,仅在编译器编译的时候,调用一次初始化,运行时不会再进行初始化。
朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式