内存和硬盘的区别:
内存(RAM):①:掉电则数据丢失 ②:随机访问 ③:访问速度快
硬盘(ROM):①:掉电后数据依旧存在 ②:块访问 ③:访问速度慢于内存
所有内存都有一个编号(内存地址)。
当需要访问一块内存时,只要得到他的有效地址,则计算机就会直接访问到该地址所代表的内存空间
内存又分为两种:1)栈空间内存 2)堆空间内存
这两者的主要区别在于,栈空间内存为自动申请自动释放,堆空间内存为手动申请手动释放
栈空间内存的特点:
1)自动申请,自动释放
2)数据入栈出栈的顺序为,先进后出
也就是说,最先访问到的数据为最后入栈的数据
局部变量(自动变量):
#为什么叫自动变量,什么叫自动变量:在变量名前加上auto关键字称为自动变量,C语言系统会给在函数内部申请的变量缺省性的加上auto
#函数内部申请的变量就是局部变量,主函数也是函数,主函数内部申请的变量也是局部变量
#所以自动变量就是局部变量
结合上面所说,栈空间的特点是自动申请自动释放,所以,局部变量存在一个生命周期,其在声明时开始其生命周期(即:在栈空间上自动申请一片内存空间),到作用域结束时,则其生命周期结束(即:其在栈空间上的内存空间被释放)
空间申请和空间释放(回收):
空间申请:内存空间是固定存在的,只不过,这一片的内存空间的使用权是属于程序员的还是电脑的 的问题。那么所谓的申请空间就是指:程序员向系统申请要了一片内存空间,用来管理申请的变量,此时这片空间就归程序员所有,可以正常访问。
空间释放(回收):系统回收了不再使用的内存空间,此时内存空间上的值并没有被清空,只是程序员不再享有该空间的使用权,如果程序员握有该空间的地址,却没有该空间的使用权,然后使用地址访问的方式强行访问该空间,则可能会出现意想不到的错误。
能够修饰变量的关键字:
1)static:
①:延长生命周期:针对的是修饰局部变量
从主函数开始之前存在,主函数结束之后销毁
它和全局变量有些类似
#生命周期被延长了,但是作用域没有被延长。
②:限制作用域:针对的是修饰全局变量
全局变量的作用域在整个文件,那么,当这个全局变量被static修饰时,则这个全局变量只能在当前文件中使用。(全局变量默认初始化为0)
2)const:
①将修饰的变量变成常量
数据的储存方式:
①局部变量:栈空间
②静态局部变量和全局变量:静态存储区
③常量:代码段(数据段)
网友评论