c语言选择题 解释一下计算过程
2个回答
展开全部
k是全局变量,它的有效范围从定义位置开始到源文件结束
函数f()中m和i是静态局部变量,函数调用结束后继续保留原值,在下一次调用改函数时,这两个变量就是上一次函数调用结束时的值。
函数main()m和p是自动变量,函数调用结束时自动释放存储空间
第一次p=f(k,m),f()的形参a得到值4,b得到值1,i+=m+k++的计算结果是(i=2+0+4,m=0,k=5);m=i+a+b的计算结果是m=6+4+1,函数返回11
第二次p=f(k,m),f()的形参a得到值5,b得到值1,i+=m+k++的计算结果是(i=6+11+5,m=11,k=6);m=i+a+b的计算结果是m=22+5+1,函数返回28
结果是11,28
函数f()中m和i是静态局部变量,函数调用结束后继续保留原值,在下一次调用改函数时,这两个变量就是上一次函数调用结束时的值。
函数main()m和p是自动变量,函数调用结束时自动释放存储空间
第一次p=f(k,m),f()的形参a得到值4,b得到值1,i+=m+k++的计算结果是(i=2+0+4,m=0,k=5);m=i+a+b的计算结果是m=6+4+1,函数返回11
第二次p=f(k,m),f()的形参a得到值5,b得到值1,i+=m+k++的计算结果是(i=6+11+5,m=11,k=6);m=i+a+b的计算结果是m=22+5+1,函数返回28
结果是11,28
追问
为什么第二次p=f()时,形参为5,k不是全局变量吗?应该一直等于4?
追答
全局变量的作用就是增加函数间数据联系的通道,让它的值可以被多个函数使用,如果在一个函数中改变了全局变量的值,就能影响到其它函数中全局变量的值。
main函数第一次调用函数f(k,m)时k=4,但调用之后全局变量k在函数f()中做了k++,k=5了,它影响函数main()第二次对k的引用,main函数第二次调用函数f(k,m)时k=5
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询