当前位置:   article > 正文

C++自学之静态局部、全局,局部、全局变量的区别_c++全局函数和局部函数的区别

c++全局函数和局部函数的区别

局部变量

作用域在函数内,在进入函数时自动创建,离开函数时自动消失.简而言之就是函数中定义的变量,无法在函数外访问,且在每次函数调用时自动创建,离开函数时自动消除,消除时调用析构函数

​​​​​​​在栈上创建

  1. void func()
  2. {
  3. string str = "abc";//局部变量
  4. }
  5. int main()
  6. {
  7. int a;//局部变量
  8. double pi = 3.14;//局部变量
  9. return 0;
  10. }

全局函数:

在函数外定义的变量,且作用域为整个项目中的所有文件,意思就是main()函数和子函数都可以访问.除了定义全局变量的文件访问,项目中其他文件也可以访问;

  1. string str = "abc";//全局变量
  2. int a;//全局变量
  3. double pi = 3.14;//全局变量

静态局部变量:

在申明的时候加上static即可

作用域:静态局部变量和普通局部变量相同,仅在定义该变量的函数内可见;他两唯一区别就是,在首次调用函数时创建静态局部变量,离开函数时变量不会自动消失,等下次调用函数时该变量继续沿用上次函数调用的结果,通常用来调用函数调用的次数

生命周期:静态局部变量在程序执行期间一直存在,即使函数被调用完毕,他的值也保留在函数内存中

  1. void func()
  2. {
  3. static string str = "abc";//静态局部变量
  4. }
  5. int main()
  6. {
  7. static int a;//静态局部变量
  8. static double pi = 3.14;//静态局部变量
  9. return 0;
  10. }

静态全局变量:

去全局变量相比,只有定义静态全局变量的文件可以访问该变量,项目中其他文件不可以访问该变量

  1. static string str = "abc";//全局变量
  2. static int a;//全局变量
  3. static double pi = 3.14;//全局变量

总结:

生命周期:

全局变量和静态局部、全局变量的生命周期与程序的生命周期一样长(注意静态局部变量只在定义该静态变量的函数内有效),局部变量生命周期只在该函数作用域内

作用域:

全局变量和静态全局变量的作用域可以是整个程序,而局部变量和静态局部变量的作用域只是在所在的函数内

存储位置:

全局变量和静态全局变量存储在静态存储区,静态局部变量存储在相同位置,而局部变量存储在堆栈区

初始化:

全局变量和静态全局变量在程序启动的时候被初始化或空值,而局部变量和静态局部变量在定义时不会被初始化,其值是未知的.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/469864
推荐阅读
相关标签
  

闽ICP备14008679号