理解静态变量、局部变量、全局变量、静态函数、全局函数的作用域和生命周期以及在内存中的存存储位置

/*
	2022.06.05
	目的:
		理解静态变量、局部变量、全局变量、静态函数、全局函数的作用域和生命周期以及在内存中的存存储位置
	理论:
		1.局部变量:
			局部变量也叫auto自动变量(auto可写可不写),一般情况下代码块{}内部定义的变量都是自动变量,特点如下:
			a.在一个函数内定义,只在函数范围内有效;
			b.在复合语句中定义,只在复合语句中有效;
			c.生命周期,随着函数的调用结束或复合语句的结束,其生命周期也就结束了;
			d.存储位置:栈区。
		2.全局变量:
			a.函数外定义;
			b.可被本文件或者其他文件中的函数共用(需要提前声明);
			c.生命周期,从程序运行开始到结束,一直存在;
			d.注意,不同的文件全局变量的名字不可重名;
			e.注意,如果未初始化,系统默认初始化为0;
			f.存储位置,全局区。
		3.静态变量:
			在变量前面加上关键字static的即是静态的变量,静态变量的存储位置都是在全局区,所以他们的生命周期是从程序开始到结束。
			但是作用域两者有区别。
			(1)静态局部变量
				a.生命周期,从程序运行开始到结束,一直存在;
				b.作用域,局部作用域引用,只能定义在函数内部有效;
				c.注意,函数内部只能初始化一次,但是可以多次赋值;
				d.注意,函数内部局部变量和静态局部变量的变量名不能相同;
				e.存储位置,全局区。

			(2)静态全局变量
				a.生命周期,从程序运行开始到结束,一直存在;
				b.作用域,文件作用域,函数外定义,只能在本文件的函数中使用;
				c.注意,不同文件静态全局变量可以重名,作用域不冲突;
				d.注意,同静态局部变量一样,在文件中也只会初始化一次;
				e.存储位置,全局区。
		4.函数:
			函数在默认情况下都是全局的,在函数返回值类型的前面加上static则函数变为静态,
			函数定义为static意味着这个函数只能在定义这个函数的文件中被调用,在其他函数内
			不能被调用,即使在其他文件中声明这个函数也没用。

			(1)全局函数
				a.生命周期,从程序创建到程序销毁;
				b.作用范围,项目中的所有文件;
				c.存储空间,代码区;

			(2)静态函数
				a.生命周期,从程序创建到程序销毁;
				b.作用范围,定义所在文件;
				c.存储空间,代码区;
		5.补充:static关键字三大作用
			(1)隐藏
				当我们在没有使用static这个关键字的时,定义的全局变量和函数都是具有全局性的。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突的问题。
			
			(2)加长变量的生命周期
				存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化,并且生命周期是整个程序开始运行到程序结束。
			
			(3)静态变量未初始化默认初始化为0
				静态的变量如果没有进行初始化的话,系统会默认初始化为0,全局变量也是如此。

	功能:
		
*/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

軒邈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值