c语言整理笔记课件.doc

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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.

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档