- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言整理笔记课件
1.基本类型
1.1变量的分类
以{}为划分依据,分为全局变量与局部变量。
例外:函数参数也是局部变量
1.2变量的作用域
作用域的最大单位是文件(编译的最小单位是文件),作用域的最小单位是{},全局变量的作用域的文件,局部变量的作用域是{},变量的作用域,始于定义处,结束预作用域结束。
相同的作用域内不可以有重名的变量。
当局部变量发生重名的时候,局部会覆盖全局的变量,小范围与大范围的变量发生重名的时候,小范围会覆盖大范围的变量。
1.3变量的生命周期
局部变量的生命周期早所在的函数,全局变量的声明周期同main()。
1.4修饰类型
修饰类型影响了变量的生命周期和存储区域。
1.4.1auto自动变量
局部变量在缺省存储类型的情况下归为自动变量
作用:修饰局部变量 ?
存储区域: 栈 ?
生命周期:同所在的函数或作用域 ?
特点:如未初始化,初始值未知。大将军变量,随用随开,用完即消
1.4.2register寄存器变量
存放在 CPU 的寄存器中。对于循环次数较多的循环控制变量及循环体内反复使用 的变量均可定义为寄存器变量。 ?
作用:修饰局部变量 影响了变量的存储区域 ?
存储区域:寄存器 ?
生命周期:同所在的函数或作用域,随用随开,用完即消。 ?
特点:如未初始化,初始值未知。不可取地址,易被编绎器优化
1.4.3static静态变量
在程序执行时存在,并且只要整个程序在运行,就可以继续访问该变量。 ?
作用:修饰局部变量和全局变量 ?
存储区域:数据区 ?
生命周期:同 main() ?
特点:只初始化一次, 默认初始化为 0,生命周期同 main(); 影响了全局变量的作用域和局部变量生命周期。
1.4.4extern扩展类型
扩展全局的作用域。同文件中,或不同文件中。 ?
作用:修饰全局变量。 ?
存储区域:数据区 ?
生命周期:同 main() ?
特点:因为是修饰的是全局变量,所以只扩展了其作用域(本文件内或跨文件)。
1.5c中const的类型
1.const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
2.提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。?
1.6总结
变量类型 修饰类型 作用域 生命周期 进程空间 全局 无 本文件或其他文件 同main 读写数据区rw static 本文件 读写数据区rw 局部 register 定义变量所在的{} 同所在的函数 寄存器 auto 定义变量所在的{} 栈 static 定义变量所在的{},但可被引用 同main 读写数据区rw
2.进程空间与内存管理
2.1程序和进程
★程序:源代码经过编译器编译后生成的可执行文件,静态的概念
★进程:可执行文件,运行后被加载在内存中运行,运行的过程,即为进程。以下是可执行文件加载到内存后的分布情况,动态的概念。
2.2进程空间布局
首先32为操作系统采用虚拟内存技术,将4G的虚拟地址空间划分为两个部分:用户空间和内核空间。用户空间从0到0xbfffffff,内核空间从3G到4G。用户进程不能访问内核。
程序中访问的内存地址不再是实际的物理内存地址,而是一个虚拟地址,然后由操 作系统将这个虚拟地址映射到适当的物理内存地址上。这样,只要操作系统处理好虚拟 地址到物理内存地址的映射,就可以保证不同的程序最终访问的内存地址位于不同的区 域,彼此没有重叠,就可以达到内存地址空间隔离的效果。
★进程空间分布
如下图:
数据量分布 进程空间 注释 command args 命令行参数 普通局部变量 stack 栈 dynamic lib 加载动态库区 malloc动态申请空间 heap 堆 data
常量 uninit bss 未初始数据段 普通全局
静态(全局或局部) 未初始化 init
常量 rw 初始化数据段的读写段 初始化
ro
初始化数据段的只读段 常量 text 代码段 注:上面常量是包括初始化的ro只读段 2.3内存管理
2.3.1栈内存
栈区(stack)有编译器自动分配释放,存放函数的参数,局部变量等.在windows中,栈是向低地址扩展的数据结构,是一块连续的内存区域。也就是栈顶的地址和栈的最大容量(windows是2M)是系统规定好的。如果申请的空间超过剩余栈空间,将提示overflow,因此从栈获得的空间较小。栈空间不能返回。
2.
您可能关注的文档
- 托管班——细节决定成败关键详解.ppt
- 扣件钢管楼板模板支架计算书详解.doc
- 扎佐现状分析详解.pptx
- CSC2015出血性卒中热点回顾课件.ppt
- 托管式防火墙穿越和媒体释放详解.pptx
- CSP分厂用精益管理方法降低改判率经验介绍课件.ppt
- css样式之背景课件.pptx
- 执行问题,共同解决(116页)详解.ppt
- CRH系列动车组讲座一.课件.ppt
- CSFB流程及常见问题课件.doc
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)