关于C语言里的函数嵌套调用的问题?
发布网友
发布时间:2022-04-01 17:38
我来回答
共2个回答
热心网友
时间:2022-04-01 19:07
先看
fun(a+
)
里面
fun(d)
d是全局变量
值为1
再看fun(1)
把1传给fun的形参p
进入fun
p
为1
fun内有
局部静态变量d
初值为5
d+=p
使之
变为6
输出d
(局部变量,全局变量名也是b被屏蔽,因此这个d是fun内的局部变量d)
所以输出6
return
返回6
fun(1)返回6
fun(a+6)
a是3
3+6的值9
传给fun的形参p
这是第二次调用fun函数
p为
9
由于d是
静态局部变量
故再次调用fun函数
其中为上一次调用保留的值6
d+=p
使之
变为15
fun函数内
输出
静态局部变量d的值15
fun(9)返回15
返回的15给main函数的printf输出
有输出15
所以是
61515
热心网友
时间:2022-04-01 20:25
先对主函数内输出语句中的fun(d)求值(这里的d是全局变量d=1),fun里的静态局部变量d变成5+1=6,屏幕上输出6,返回值也是6。
再对fun(a+6)求值,即fun(9),fun里静态局部变量d变成6+9=15,屏幕上输出15,返回值也是15。
最后执行主函数里的打印,相当于printf("%d\n",15);,输出15。