0
点赞
收藏
分享

微信扫一扫

变量的作用域与生命周期

hoohack 2022-01-04 阅读 82
c语言

变量的作用域与生命周期

  1. 局部变量

    1. 普通

      仅在作用域有效,每次调用包含该局部变量的函数时,该变量会被重新初始化。

      例如:

      void func()
      {
          int a = 1;
          ++a;
          printf("a = %d\n",a);
      }
      int main()
      {
          func();
          func();
      }
      
    2. 静态staic

      仅在作用域有效,每次调用包含该局部变量的函数时,该变量不会被重新初始化,而是接着上一次的值运行下去。

      例如:

      void func()
      {
          static int a = 1;
          ++a;
          printf("a = %d\n",a);
      }
      int main()
      {
          func();
          func();
      }
      

    注:局部变量不赋初值其值为随机值

  2. 全局变量

    1. 普通

      作用域跨文件,不会被重新初始化,在上次值得基础上改变值。

      跨文件使用时需用extern声明。

      例如:

      int a = 1;
      
      extern int a;
      int main()
      {
          a++;
          printf("a = %d\n",a);
          return 0;
      }
      
    2. 静态static

      作用域限定在其所在的文件内。

      例如:

      static int a = 1;
      
      extern int a;
      int main()
      {
          a++;
          printf("a = %d\n",a);
          return 0;
      }
      //err
      

      注:局部变量不赋初值其值为 0

举报

相关推荐

0 条评论