Static 静态局部变量

void fun(int a)
{
    a = 3;
}

int main(void)
{
    static int a = 5;
    
    fun(a);
    
    printf("a = %d
", a);
    
    return 0;
}

打印:a = 5  static定义变量,函数调用后,a的值还是不变

上面这个是我本来理解的功能,static定义变量后,调用函数,值会被改变,但是值没有变,把static的作用理解错了

void fun(int *b)
{
    static int c = 10;
    
    *b = c--;
}

int main(void)
{
    int a = 0;
    
    fun(&a);
    printf("a = %d
", a);
    fun(&a);
    printf("a = %d
", a);    

    
    return 0;
}

打印:

a = 10  

a = 9

static 在函数调用中就表示只定义一次,再次调用函数时,不再执行此赋值语句

原文地址:https://www.cnblogs.com/Deanboy/p/7515497.html