网站大量收购闲置独家精品文档,联系QQ:2885784924

C++函数运用讲义.ppt

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

§6.10 变量的存储类型 存储类型决定标识符的存储区域,即编译系统在不同区域为不同存储类型的标识符分配空间。 由于存储区域不同,标识符的生命期也不同。 所谓生命期,指的是标识符从获得空间到空间释放之间的期间。 标识符只有在生存期中、并且在其自己的作用域中才能被访问。 变量的存储机制与C++的内存布局 程序区 静态存储区 程序占用内存示意图 存放程序的可执行代码 存放程序中定义的静态变量 堆栈: 存放程序所用的动态数据 动态存储区 栈区:由系统管理,用于为动态变量分配内存。 堆区:由用户管理。它的分配、使用和回收第5章第5节。 §6.10 变量的存储类别 自动的(auto) 静态的(static) 寄存器的(register) 外部类型(extern) 动态存储类型:只有变量能作为该类型 auto 函数的局部变量和形参的默认 例如:auto int x;或 int auto x;或 int x 自动变量关键字可以省略,属于动态存储方式,若未赋初值,则其值不定。 register 存放在cpu的寄存器中 为提高程序运行效率,可以将某些变量保存在寄存器中,即用register说明为寄存器变量。 例如: register int i,j; ⑴寄存器类型变量主要用作循环变量,存放临时值。 ⑵静态变量和全局变量不能定义为寄存器类型变量。 ⑶只有局部自动变量和形式参数可以作为寄存器变量,其它变量不行。在调用该函数时一个寄存器变量占用一个寄存器,函数调用结束则释放寄存器。 寄存器变量可以提高执行效率,如今优化的编译系统能够自动地将使用频繁的变量放在寄存器中,而不需要程序设计者指定,所以实际上用register声明变量是不必要的。了解即可。 静态存储类型:默认初始化为0 static 局部/全局静态(或称为内部/外部静态) 静态变量均存储在静态存储区,如果程序未显式给出初始化值,系统自动初始化为0,且初始化只进行一次; 静态变量占有的空间要到整个程序执行结束才释放,故静态变量具有全局生命期。 局部静态变量 定义在块中,当块第一次被执行时,编译系统在静态存储区为其开辟空间并保存数据,该空间一直到整个程序结束才释放。 局部作用域,但为全局生命期。 静态局部变量的作用:保存函数运行后的结果,以便下次调用函数时,继续使用上次计算的结果。 [例6.24]阅读程序,写出程序运行后的结果。 #include iostream using namespace std; int x=2; //全局变量 void main( ) { int a=2,i; //局部变量 int f(int); for(i=1;i=3;i++) coutNoi : f(a)endl; couta=aendl; coutx=xendl; } int f(int a) { int b=0; //自动变量 static int c=3; // 静态变量 b=b+1; c=c+1; x++; a++; return a+b+c+x; } [例6.25] 读程序,写结果。 #includeiostream #includeiomanip using namespace std; int x=5; void main() { void s(int , int ); int i; for(i=1;i3;i++) {s(i+3,x); coutx=xendl;} } void s(int x,int y) {static int z=2; y=--x*4+z++; coutsetw(4)--xsetw(4)y/2endl; } 2 7 x=14 3 9 x=19 全局静态变量 在说明全局变量时,用static修饰 作用:变量仅限于本程序文件内使用。 若一个程序仅由一个文件组成,在说明全局变量时,有无static修饰,并无区别。 对于多文件构成的程序来说,如果将仅局限于一个文件中使用的全局变量加static修饰,则能有效避免全局变量的重名问题。 extern- 全局变量和函数名的默认 只能用来声明已经定义的外部变量,而不能用于变量的定义。 作用:扩展全局变量的作用域 在本文件中提前使用后面定义的全局变量 在一个文件中使用另一个文件中已定义的外部变量 例 用extern对外部变量作提前引用声明,以扩展程序文件中的作用域。 #include iostream using namespace std; int max(

文档评论(0)

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

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

1亿VIP精品文档

相关文档