变量的作用域与生命周期

2022/1/4 23:15:49

本文主要是介绍变量的作用域与生命周期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

变量的作用域与生命周期

  1. 局部变量

    1. 普通

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

      例如:

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

      两次调用func()a的值都为2,生命周期随函数的结束而结束。

    2. 静态staic

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

      例如:

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

      第一次调用func()a的值为2,第二次调用后为3,生命周期随程序的结束而结束。

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

  2. 全局变量

    1. 普通

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

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

      例如:

      a.c

      int a = 1;
      

      main.c

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

      a 的最终值为2;

    2. 静态static

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

      例如:

      a.c

      static int a = 1;
      

      main.c

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

      报错:a 未定义,发生链接错误。因为静态全局变量无法跨文件使用。

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



这篇关于变量的作用域与生命周期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程