{ int a=2,i; for(i=0;i<3;i++) printf("%d",f(a));}还有答案中又得有空格的是杀????????????????
答案 : 7 8 9
过程
此题考查静态局部变量 加了static的静态局部变量在函数调用以后内存没有释放(因为static修饰的局部变量内存分配在全局区(也叫静态区),未使用static关键字修饰的局部变量内存分配在栈区(栈区的生命周期是函数结束之后)),因为c被static关键字修饰,所以下次进入此函数,c的值是上次修改以后的。但是普通的局部变量,如题b每次调用以后释放内存,下次调用是都是初始化为初值.
在main函数中
第一次调用f(a) f函数内的变量 b = 1, c = 4, a = 2 返回值就是7
第二次调用f(a) f函数内的变量 b = 1, c = 5(静态局部变量) a = 2 返回值8
第三次调用f(a) f函数内的变量 b = 1, c = 6(静态局部变量) a = 2 返回值9
空格问题 如果main函数的输出函数是printf("%d", f(a)); 则没有空格如果main函数的输出函数是printf("%d ", f(a)); 则有空格(注意区别,在%d后有空格)
过程加解析,还有789中间有空格吗?
追答过程: