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