C语言入门篇--关键字static详解

目录

  • 1.修饰局部变量
    • 1.1作用
    • 1.2举例
      • (1)不加static
      • (2)加static
      • (3)静态局部变量的初始化只会进行一次
  • 2.修饰全局变量
    • 2.1作用
      • 2.2举例
        • (1)不加static
        • (2)加static
    • 3.修饰函数
      • 3.1作用
        • 3.2举例
          • (1)不加static
          • (2)加static

      1.修饰局部变量
      1.1作用
      ststic修饰局部变量,会改变局部变量的生命周期,不改变作用域:
      生命周期:和全局变量一样具有全局性,但在内存中的位置没有改变,还在在静态存储区中。
      作用域:作用域不改变。
      【C语言入门篇--关键字static详解】注意:静态局部变量的初始化在整个变量定义时只会进行一次。

      1.2举例



      (1)不加static
      #include Show(){ int j = 0; j++; printf("j=%d\n", j); }int main(){ int i = 0; for (i = 0; i < 10; i++) {Show(); } return 0; }

      C语言入门篇--关键字static详解
      文章图片




      (2)加static
      #include Show(){ static int j = 0; //生命周期变为全局的, j++; printf("j=%d\n", j); }int main(){ int i = 0; for (i = 0; i < 10; i++) {Show(); } return 0; }

      C语言入门篇--关键字static详解
      文章图片


      (3)静态局部变量的初始化只会进行一次
      #include Show(){ static int j = 0; j = 3; j++; printf("j=%d\n", j); }int main(){ int i = 0; for (i = 0; i < 10; i++) {Show(); } return 0; }

      C语言入门篇--关键字static详解
      文章图片


      2.修饰全局变量
      2.1作用
      static修饰全局变量,表示全局变量只在本文件内有效,取消了全局变量的跨文件属性。

      2.2举例
      由于static对全局变量的作用在一个文件里体现不出来,固我们创建两个文件,
      在test1.c中通过extern引用外部变量g_vale,在test2.c中创建全局变量g_vale 。
      (1)不加static test1.c:
      #include extern int g_vale; int main(){ printf("g_vale=%d\n", g_vale); return 0; }

      test2.c:
      #include int g_vale = 100; //定义全局变量

      编译运行:
      C语言入门篇--关键字static详解
      文章图片

      (2)加static test1.c
      #include extern int g_vale; int main(){ printf("g_vale=%d\n", g_vale); return 0; }

      test2.c
      #include static int g_vale = 100; //定义静态全局变量

      编译运行:运行失败,无法解析外部符号g_vale
      C语言入门篇--关键字static详解
      文章图片


      3.修饰函数
      3.1作用
      static修饰函数,和其修饰全局变量类似,表示函数只可在本文件内调用使用,取消了函数的跨文件属性。

      3.2举例
      由于static对函数的作用在一个文件里体现不出来,固我们创建两个文件,
      在test1.c中通过extern引用外部函数Show( ),在test2.c中创建Show( )函数
      (1)不加static test1.c:
      #include externShow(); //也可以不写声明,文件在链接时也可以找到,但会出现Warning:Show()未定义int main(){ Show(); system("pause"); return 0; }

      test2.c:
      #include void Show(){ printf("This is Show()\n"); }

      编译运行:
      C语言入门篇--关键字static详解
      文章图片

      (2)加static test1.c:
      #include externShow(); int main(){ Show(); system("pause"); return 0; }

      test2.c:
      #include static void Show(){ printf("This is Show()\n"); }

      编译运行:运行失败,无法解析外部符号Show
      C语言入门篇--关键字static详解
      文章图片


      以上就是C语言入门篇--关键字static详解的详细内容,更多关于C语言关键字static详解的资料请关注脚本之家其它相关文章!

        推荐阅读