C语言高手请帮帮忙!

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:10:25
#include“stdio.h”
int f(int a)
{ int b=0;
static int c=3;
b++;
c++;
return (a+b+c);
}
main()
{int a=2,i;
for(i=0;i<3;i++)
printf("%5d",f(a));
}
中f(a)的值等于return(a+b+c)的值吗? 为什么?
在后续程序中a=2,c=4(静态变量)不变,只是b=b+1
是吗?

c为静态局部变量,意味着它只能初始化一次,b为自动变量,每次调用都赋值为0。第1次调用后:a=2,b=0+1,c=3+1,返回a+b+c=7;第2次调用后:a=2,b=0+1,c=4+1,返回a+b+c=8;第2次调用后:a=2,b=0+1,c=5+1,返回a+b+c=9。

a=2;c的话f函数每调用一次就自加一次,即第一次为4,第二次为5,类推;b的初始为0,自加为1,即每次b都是1.

答案应该是7、8、9

静态变量与全局变量差不多,就是函数执行完毕之后,这个变量的值仍然保留,下次调用该函数时,这个变量的值仍然存在。