static定义的变量如果不销毁,会一直保留上次运行的结果。
代码:
#include<stdio.h>
fun(int p)
{
int k=1;
static t=2;
k=k+1;
t=t+1;
return(p*k*t);}
main()
{
int x=4;
fun(x); //第一次调用函数
printf("%d\n",fun(x)); //第二次调用函数
}
解析:
第一次调用函数:p=4,k=2,t=3
第二次调用函数时,p依然是x的赋值为4;k被重新赋值为1,自增为2;t没有被销毁依然是3,保留上次运行结果,自增后为4。所以输出为:4*2*4=32
转载于:https://blog.51cto.com/fandecorator/1933544