问题
填空题
下列程序的运行结果是______。 #include<stdio.h> func(a,b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } main() { int k=5,m=3,p; p=func(k,m); printf("%d",p); p=func(k,m); printf("%d\n",p); }
答案
参考答案:11 23
解析: 在主函数中第一次调用func子函数时, m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因为在子函数中将m和i定义成了static类型,所以在子函数中对m和i进行的改变在下一次调用子函数时能进行保存,所以第二次调用子函数时,m=11,i=3,则i=i+ m+1=15,m=i+a+b=15+5+3=23。