用static声明的变量是静态变量,比如static int a =4;这个a的初始值为4(仅仅是初始值),并且这个变量是一直存在的。
几个a并不是同一个a,我们可以把程序中的a改一下名字,方便理解。如下:
#include
int fun(int n)
{
static int a =3;
int t =0;
if(n%2)
{
static int b =4;
t+=b++;
}
else
{static int c =5;
t+=c++;
}
return t+=a++;
}
main()
{
int i,s=0;
for (i=0;i<3;i++)
s+=fun(i);
printf ("%d\n",s);
}
开始在稿纸上分析。
调用函数执行完之后局部变量空间会释放,但是如果是static静态变量就不会被释放。
这两个都是静态局部变量,static int a =4;因为在if程序块中,它的有效区域更小。
静态局部变量的特点,静态是说,在同一个进程中第二次调用是上次运算过的值,局部变量是在函数内部,包括main函数内部声明的变量。。。