第四讲C程序的结构.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四讲C程序的结构

第四讲 C++程序的结构 本章主要内容 变量的类型 作用域与可见性 文件结构与编译预处理命令 名字空间 6.1 变量的作用域 除了按数据类型区分变量外,根据变量定义的位置,可以把变量分成全局变量与局部变量。全局变量是指定义在函数体外部的变量,它能被所有函数使用。局部变量是指定义在函数或复合语句中的变量,只能在函数或复合语句中使用。 变量的存储类型 auto存储类 属于一时性存储,其存储空间可以被若干变量多次覆盖使用。 register存储类 存放在通用寄存器中。 extern存储类 在所有函数和程序段中都可引用。 static存储类 在内存中是以固定地址存放的,在整个程序运行期间都有效。 6.1.2 变量的存储类型 static型变量 可执行程序的结构 代码区(text segment) 存放CPU执行的机器指令(machine instructions) 代码区是只读的 规划了局部变量的相关信息 全局数据区/静态数据区 包含了程序中 已初始化的全局变量、已初始化的静态变量(全局、局部) 常量数据(如字符串常量) 常变量 进程的结构 如果将某个可执行文件加载到内存运行,则将成为一个进程 6.1.3 变量在内存中的存储 当一个程序准备运行时,操作系统会为程序分配一块内存空间,C++程序的内存通常被分为四个区: ①全局数据区(data area) ②代码区(code area) ③栈区(stack area) ④堆区(heap area) 全局变量、静态变量、字符串常量、常变量存放在全局数据区;所有的函数和代码存放在代码区;为运行函数而分配的函数参数、局部变量、返回地址存放在栈区;堆区用于动态内存分配。 变量的生存期为从产生到消失的时期。全局变量、静态变量、常变量生存周期为整个程序的生存周期,因此称为静态生存期;局部变量的生存周期起于函数调用,结束于函数调用结束,其生存期是动态的,因此称为动态生存期。 6.1.3 变量在内存中的存储 常变量(常量)、全局变量、局部静 态变量、字符串常量在程序运行前 在数据区进行分配。并且依次按照 常变量、全局变量、局部静态变量 的顺序从低地址向高地址分配。常 变量按定义的先后次序分配,全局 变量、局部变量也一样。 6.1.3 变量在内存中的存储 6.2 作用域与可见性 作用域 一个标识符在程序正文中有效的区域。 块作用域(局部作用) 类作用域 文件作用域 可见性 从对标识符引用的角度看变量的有效范围。 块作用域 在块({ }标记的一段程序单元)中声明的标识符,其作用域自声明处起,限于块中,例如: void fun(int a) { int b; cin b; if (b 0) { int c; ...... } } 类和文件作用域 类作用域作用于特定的成员名,类及其对象有特殊的访问和作用域规则。 不在前述各个作用域中出现的声明,具有文件作用域,这样声明的标识符的作用域开始于声明点,结束于文件尾。 可见性的概念 可见性是从对标识符的引用的角度来谈的概念。 可见性表示从内层作用域向外层作用域“看”时能看见什么。 如果标识在某处可见,则就可以在该处引用此标识符。 可见性的一般规则 标识符应声明在先,引用在后。 在同一作用域中,不能声明同名的标识符。 对于两个嵌套的作用域,如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。 对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。 例 #includeiostream.h int i; //文件作用域 int main() { i = 5; { int i; //块作用域 i = 7; cout i=“ i endl; //输出7 } cout i=“ i ; //输出5 return 0; } 例2 块作用域对象的生存期 #includeiostream.h void fun(); void main() { fun(); fun();} void fun() { static int a = 1; int i =5; a++; i++; cout i=“ i ,a=“ a endl; } 变量的生存期与可见性 全局变量 具有静态生存期。 静态局部变量 有全局寿命,局部可见。 只第一次进入函数时被初始化。 一般局部变量 具有动态生存期。 每次进入函数时都初始化。 数据与函数 数据存储在

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档