上面函数相当于下面的:
int f(int a)
{
int b=0;
static int c=3;
a=c;
c = c+ 1;
b = b + 1;
return a;
}
void main()
{
int a=2,i,k;
for(i=0;i<2;i++) {
k=f(a);
a++
}
printf("k=%d\n",k);
}
main里的for循环说明:
第一次:i=0;k=f(2);此时f(2)的值为3,c=4;
第二次:i=1;k=f(3);此时f(3)的值为4,c=5;这里要注意的是c的值,因为c是static的,
它只被初始化一次。c的初始值是3(第一次调用f的时候),第二次调用f的时候,此时c的初始值变成了4,因为第一次调用f的时候(c=c+1)。
所以得出的结果是:
k=4