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

局部变量

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

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

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;//全局变量

总结:

生命周期:

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

作用域:

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

存储位置:

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

初始化:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值