变量与修饰变量

变量的属性:
存储位置:变量使用的是那一段内存
作用域:变量的使用范围
生命周期:创建时间~销毁时间

变量的分类:
全局变量:定义在函数外。
存储位置:bss未初始化、被初始化了存储在data。
作用域:整个程序,比如在a.c定义了全局变量,在b.c中也可以使用
生命周期:main函数执行前就被定义出,程序运行结束后再释放
局部变量:定义在函数内。
存储位置:栈
作用域:所在函数内
生命周期:从定义语句开始~函数执行结束,函数没调用一次就进行一遍定义和释放。
块变量:定义在if、for、while等语句内。
存储位置:栈
作用域:所在语句块的大括号内
生命周期:从定义语句开始~函数执行结束。

修饰变量的关键词:
auto 用来定义自申请内存、自定释放内存的变量(局部、块变量)。
不加就代表加,与 signed 一样。
注意:全局变量前不能使用。
const 是对变量提供一种保护,但它不是常量。
变量一旦初始化后,就不能再显示修改他的值。
const 修饰被初始化过的全局变量才是真正的常量,一旦修改就出现段错误,因为编译器把这种全局变量的存储位置划分成text。

static 限制作用域(全局变量函数),改变存储位置,延长生命周期(局部、块变量)。
		修饰变量:
			全局变量:限制全局变量的作用域,只能在它所在的.c内使用
			块、局部变量:改变存储位置,由栈改为bss或data,但作用域没有变,并且延长生命周期。
		修饰函数:
					const int func(void);const 就是的函数的返回值。
					static int func(void); static 修饰的是函数。
					由普通函数(外部函数)变成内部函数,只能在.c文件内使用。
register (寄存器)
	计算机的存储介质:硬盘->固态硬盘->内存->缓存->寄存器
	申请把变量存储位置更改为寄存器。因为寄存器有限不一定成功。
	寄存器变量不能取地址,&变量名。
volatile (不稳定的,易变的)修饰线程间的共享的变量,或者硬件编程时使用
	如果一个变量的值没有被显示的修改,编译器不会再次从内存中读取它的数值,而是直接使用上次的读取结果(优化)。
	volatile 的功能就是告诉编译器的值会随时变化,不要优化它的取值过程(每次用到变量时都去内存中获取它的值)。
	int num = 10 ;
	num == num //永远为真
	volatile int num = 10 ;
	num == num //可能为假				
extern 声明变量,多文件中共享全局变量时使用,谁声明谁使用。
	定义:创建变量名,分配存储空间。
	声明:创建变量名。
	a.c中定义一个全局变量,b.c中如果想使用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值