变量、数据的存储——C语言基础


内存和硬盘的区别:

内存(RAM):①:掉电则数据丢失 ②:随机访问 ③:访问速度快

硬盘(ROM):①:掉电后数据依旧存在 ②:块访问 ③:访问速度慢于内存

所有内存都有一个编号(内存地址)。

当需要访问一块内存时,只要得到他的有效地址,则计算机就会直接访问到该地址所代表的内存空间


内存又分为两种:1)栈空间内存  2)堆空间内存

这两者的主要区别在于,栈空间内存为自动申请自动释放,堆空间内存为手动申请手动释放

栈空间内存的特点:

1)自动申请,自动释放

2)数据入栈出栈的顺序为,先进后出

也就是说,最先访问到的数据为最后入栈的数据



局部变量(自动变量):

#为什么叫自动变量,什么叫自动变量:在变量名前加上auto关键字称为自动变量,C语言系统会给在函数内部申请的变量缺省性的加上auto

#函数内部申请的变量就是局部变量,主函数也是函数,主函数内部申请的变量也是局部变量

#所以自动变量就是局部变量

结合上面所说,栈空间的特点是自动申请自动释放,所以,局部变量存在一个生命周期,其在声明时开始其生命周期(即:在栈空间上自动申请一片内存空间),到作用域结束时,则其生命周期结束(即:其在栈空间上的内存空间被释放)


空间申请和空间释放(回收):

空间申请:内存空间是固定存在的,只不过,这一片的内存空间的使用权是属于程序员的还是电脑的 的问题。那么所谓的申请空间就是指:程序员向系统申请要了一片内存空间,用来管理申请的变量,此时这片空间就归程序员所有,可以正常访问。

空间释放(回收):系统回收了不再使用的内存空间,此时内存空间上的值并没有被清空,只是程序员不再享有该空间的使用权,如果程序员握有该空间的地址,却没有该空间的使用权,然后使用地址访问的方式强行访问该空间,则可能会出现意想不到的错误。


能够修饰变量的关键字:

1)static:

①:延长生命周期:针对的是修饰局部变量

从主函数开始之前存在,主函数结束之后销毁

它和全局变量有些类似

#生命周期被延长了,但是作用域没有被延长。

②:限制作用域:针对的是修饰全局变量

全局变量的作用域在整个文件,那么,当这个全局变量被static修饰时,则这个全局变量只能在当前文件中使用。(全局变量默认初始化为0)

2)const:

①将修饰的变量变成常量


数据的储存方式:

①局部变量:栈空间

②静态局部变量和全局变量:静态存储区

③常量:代码段(数据段)

你可能感兴趣的:(变量、数据的存储——C语言基础)