C的++程序的结构.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C的程序的结构

第6章 C++程序的结构 6.1 变量的类型 6.1.2 变量的存储类型 C++中变量有auto 、extern、register、static四种存储类型。 1.auto说明符 auto说明符说明定义的是一个局部变量。函数中的局部变量,如果不用关键字static加以声明,编译系统对它们是动态分配存储空间的。局部变量默认存储类型为auto,所以在程序中很少使用auto说明符说明。 2. register说明符 为提高执行效率,C++允许将局部变量的值存放在CPU的寄存器中,需要时直接从寄存器中取出参加运算,不必到内存中去存取,这种类型的局部变量称为寄存器变量,用关键字register声明。在程序中定义寄存器变量对编译系统只是建议性的,而不是强制性的。 3. extern说明符 如果一个完整的计算机程序很大,分成多个模块,放在不同的文件中,分开编译成目标文件,最后连接成一个完整的可执行代码。对于所有模块共同使用的全局变量,如果在所有的模块中都定义,在连接时就会出错。 解决办法是只在一个模块中定义全局变量,在其他模块中用extern说明这是一个“外来”的全局变量。 6.1.2 变量的存储类型 4. static说明符 static说明符用于在定义变量时将变量声明为成static(静态)变量。 其格式为: static可用来声明全局静态变量和局部静态变量。当声明全局静态变量时,全局静态变量只能供本模块使用,不能被其它模块再声明为extern变量。 例如:将程序p6_1_p.cpp中的全局变量声明为: static int G=0; 那么在其他模块中就不能声明为: extern int G; //错误,G已经是一个static变量; 6.1.2 变量的存储类型 static型变量 6.1.3 变量在内存中的存储 当一个程序准备运行时,操作系统会为程序分配一块内存空间,C++程序的内存通常被分为四个区: ①全局数据区(data area) ②代码区(code area) ③栈区(stack area) ④堆区(heap area) 全局变量、静态变量、字符串常量和常变量存放在全局数据区;所有的函数和代码存放在代码区;为运行函数而分配的函数参数、局部变量和返回地址存放在栈区;动态分配内存在堆区。 变量的生存期为从产生到消失的时期。全局变量、静态变量、常变量生存周期为整个程序的生存周期,因此称为静态生存期;局部变量的生存周期起于函数调用,结束于函数调用结束,其生存期是动态的,因此称为动态生存期。 6.1.3 变量在内存中的存储 常变量(常量)、全局变量、局部静态变量、字符串常量在程序运行前在数据区进行分配。并且依次按照常变量、全局变量、局部静态变量的顺序从低地址向高地址分配。常变量按定义的先后次序分配,全局变量、局部变量也一样。 6.1.2 变量的存储类型 6.1.2 变量的存储类型 6.2 标识符的作用域与可见性 标识符的作用域是标识符在程序源代码中的有效范围,从小到大分为函数原型作用域、块作用域(局部作用域),文件作用域(全局作用域)。 1. 函数原型作用域 函数原型作用域是C++程序中最小作用域。函数原型声明时形式参数的作用范围就是函数原型的作用域。 例如:有下列函数声明: fun(int i, int j); 标识符i、j的作用域为函数原型,即函数fun形参的两个括号之间,在其他地方不能引用这些标识符。 2. 块作用域 所谓的块就是用{}括起来的一段程序,在块中定义的标识符,作用域从声明处开始,一直到块的大括号为止。其中有下列情况属于一个块: (1) 函数的形参与函数体属于一个块; (2) for()语句中,括号()中属于一个块; 6.2 标识符的作用域与可见性 6.2 标识符的作用域与可见性 6.2 标识符的作用域与可见性 4. 可见性 程序运行到某一处,能够引用到的标识符,称为该处可见到的标识符。可见性表示从某处能看到什么。 可见性的一般规则是: (1) 内层可以看到外层定义的各种标识符。 (2) 如果内、外层块定义的标识符同名,

文档评论(0)

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

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

1亿VIP精品文档

相关文档