赞
踩
作用域在函数内,在进入函数时自动创建,离开函数时自动消失.简而言之就是函数中定义的变量,无法在函数外访问,且在每次函数调用时自动创建,离开函数时自动消除,消除时调用析构函数
在栈上创建
- void func()
- {
- string str = "abc";//局部变量
- }
-
- int main()
- {
- int a;//局部变量
- double pi = 3.14;//局部变量
- return 0;
- }
在函数外定义的变量,且作用域为整个项目中的所有文件,意思就是main()函数和子函数都可以访问.除了定义全局变量的文件访问,项目中其他文件也可以访问;
- string str = "abc";//全局变量
- int a;//全局变量
- double pi = 3.14;//全局变量
在申明的时候加上static即可
作用域:静态局部变量和普通局部变量相同,仅在定义该变量的函数内可见;他两唯一区别就是,在首次调用函数时创建静态局部变量,离开函数时变量不会自动消失,等下次调用函数时该变量继续沿用上次函数调用的结果,通常用来调用函数调用的次数
生命周期:静态局部变量在程序执行期间一直存在,即使函数被调用完毕,他的值也保留在函数内存中
- void func()
- {
- static string str = "abc";//静态局部变量
- }
-
- int main()
- {
- static int a;//静态局部变量
- static double pi = 3.14;//静态局部变量
- return 0;
- }
去全局变量相比,只有定义静态全局变量的文件可以访问该变量,项目中其他文件不可以访问该变量
- static string str = "abc";//全局变量
- static int a;//全局变量
- static double pi = 3.14;//全局变量
全局变量和静态局部、全局变量的生命周期与程序的生命周期一样长(注意静态局部变量只在定义该静态变量的函数内有效),局部变量生命周期只在该函数作用域内
全局变量和静态全局变量的作用域可以是整个程序,而局部变量和静态局部变量的作用域只是在所在的函数内
全局变量和静态全局变量存储在静态存储区,静态局部变量存储在相同位置,而局部变量存储在堆栈区
全局变量和静态全局变量在程序启动的时候被初始化或空值,而局部变量和静态局部变量在定义时不会被初始化,其值是未知的.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。