#include
int sub(int *p);
int main()
{
int i,k;
for(i=0;i<5;i++)
{
k=sub(&i);
printf("k=%d\n",k);
}
return 0;
}
int sub(int *p)
{
static int t=0;
t=*p+t;
return t;
}
static int t=0;只是初始化为0;后面你再执行sub的时候 static int t=0;不会执行
static可以理解为一个作用域只在当前函数的全局变量,初始化只发生在第一次调用。后面调用sub因为t已经有值了所以算出来是0,,1,3,6,10