美文网首页
C的自我修养

C的自我修养

作者: 雨墨心 | 来源:发表于2018-01-25 20:03 被阅读0次

    关于全局变量、局部变量和static

    1. 变量有全局变量、局部变量之分。全局变量的作用域是从声明的那一行开始,默认是可以被外部引用的。而局部变量是在函数内声明的。局部变量的生命随着函数调用的结束而结束。而全局变量的生命周期会保留直到程序运行完毕
    2. 以上说的是正常情况,如果遇到非正常情况,比如加了static。那么情况则完全不同了。
      static作用的变量被称为静态变量。当static 修饰全局变量的时候,则该变量本可以被外部文件调用,现在变得不可以了。 当static 修饰局部变量的时候么,则本来在函数调用结束的时候就释放了的变量现在变得一直存在,直到程序结束。 可以理解为static告诉系统,这个变量你只要声明一次,以后在本程序运行完毕前你都不需要声明了,直接用。

    一个例子

    /* 函数内声明一个局部变量,并且加上static关键字,当函数调用结束后,该变量并不会被销毁依然存在,如何通过程序证明之*/
    
    #include <stdio.h>
    
    void func1(void) 
    {
        static int a = 100;
        a++;
        printf("%d\n",a);
    }
    
    int main(void)
    {
        func1();
        func1();
        func1();
    }
    
    /*输出 
    101
    102
    103
    声明一个变量,给我的感觉就是,让系统为该变量分配内存。
    在局部变量用static声明之后,告诉系统,这个变量只分配一次内存,以后每次调用,不用再分配内存。
    */
    
    

    相关文章

      网友评论

          本文标题:C的自我修养

          本文链接:https://www.haomeiwen.com/subject/xxlbaxtx.html