- 1、本文档共205页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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(
您可能关注的文档
- C++_程序程序调试方法.ppt
- C++语言基础课件.ppt
- c1第一章-C语言程序设计基础知识.ppt
- C8051F单片机的结构与原理讲义.ppt
- CADCAM建模技术及产品数据类型.ppt
- CAPRI培训讲义.ppt
- CET-4听力讲座.ppt
- CCTV-2全家总动员电视栏目合作招商方案.ppt
- ch 7 组织设计精简.ppt
- ch01_动物细胞培养基本技术.ppt
- 2018-2024年中国期刊杂志广告市场深度调研分析及投资前景研究预测报告.docx
- 医疗器械代理商协议范本完整版.docx
- 湖北省黄冈市黄梅县部分学校2024-2025学年九年级上学期第二次月考数学试卷(含简单答案).pdf
- 医疗器械供应商质量保证协议书.docx
- 心血管护理技术培训心得体会.pptx
- 2020-2025年中国少儿语言教育行业发展前景预测及投资战略研究报告.docx
- 音乐教育行业市场调研分析及投资前景预测报告.docx
- 湖北省黄冈市蕲春县第一高级中学2024-2025学年高一上学期12月月考化学试题(培优班)(含答案).pdf
- 2020-2025年中国安徽省生活垃圾清运和处理市场前景预测及未来发展趋势报告.docx
- 音视频会议行业发展运行现状及投资战略规划报告.docx
文档评论(0)