#include <stdio.h>
int f()
{
static int i=0;
int s=1;
s+=i;
i++;
return s;
}
int main()
{
int i,a=0;
for(i=0;i<5;i++)
a+=f();
printf("%d\n",a);
}
因为f函数的i是静态变量,值一直在累加。
f()执行了五次,这五次返回的结果分别为1,2,3,4,5,它们的和为15,注意f()定义的i变量,是一个静态变量,也就是说这个i并不是一直为0,而是变化着的,楼主可以去看看这个static的介绍
静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。
第一次调用f()返回的结果是1,即a为1,静态变量i变为1;
第二次调用f()时,i是1,返回的结果是2,即a为3,静态变量i变为2;
第三次调用f()时,i是2,返回的结果是3,即a为6,静态变量i变为3;
第四次调用f()时,i是3,返回的结果是4,即a为10,静态变量i变为4;
第五次调用f()时,i是4,返回的结果是5,即a为15,静态变量i变为5;