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


内存和硬盘的区别:

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

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

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

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


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

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

栈空间内存的特点:

1)自动申请,自动释放

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

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



局部变量(自动变量):

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

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

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

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


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

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

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


能够修饰变量的关键字:

1)static:

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

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

它和全局变量有些类似

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

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

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

2)const:

①将修饰的变量变成常量


数据的储存方式:

①局部变量:栈空间

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 几种语言的特性 汇编程序:将汇编语言源程序翻译成目标程序编译程序:将高级语言源程序翻译成目标程序解释程序:将高级语...
    囊萤映雪的萤阅读 8,060评论 1 5
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,400评论 0 27
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 10,924评论 1 22
  • 常见词根“scend”表示“爬” 前缀a常见意思有: ①否定【如amoral】; ②强调(通常是a+重复的词首辅音...
    玥姝阅读 8,014评论 2 1

友情链接更多精彩内容