先执行f(d),这里的d是全局变量d,值为1,函数内部执行d+=p,这里的d是静态变量d,所以d变为6,在执行f(a+6),即f(9),函数内部的d此时为6,所以d+=p后,静态变量d变为15,最后输出结果为 6 15 15
这个代码运行报错把,printf("%d ",f(a+f(d))),这里d没有定义。
这个题的意思应该是考察static的用法。先按照代码没问题说吧:
f(a+f(d))这里,先这行f(d),第一次执行,static int d = 5;执行,执行后d= 5(原来的d)+ 5(参数p)= 10;返回d的值10
然后执行a+f(d) = 3+10 = 13;再执行f(13),第二次进入函数, static int d = 5;不再执行。d= 10(d) + 13(p) = 23;
最后输出为:10 23 23
第一次回答问题,望采纳
分析清楚两个问题就很简单了:
1.static的作用,修饰局部变量,让局部变量d在函数被多次调用时,d不会被再次初始化(即d在第一次初始化为5后,第二次调用该函数时d延用上次函数运行后的值,而不是初始化的5)
2.在子函数调用结束后,return返回的d值被f(d)接收后,d立马变成全局变量1,
d只有在子函数内部才不是1
知道了上面两个问题,我们来按部分析即可
如图:
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632