- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章函数概要
7.7 变量存储类别 1、动态存储方式和静态存储方式 静态存储方式:在程序运行期间分配固定存储单元的方式。 动态存储方式:在程序运行期间根据需要动态分配存储单元的方式。 变量 变量 局部变量 动态存储方式变量 全局变量 静态存储方式变量 空间角度 生存期角度 存放在静态存储区的变量:静态存储方式。 存放在动态存储区的变量:动态存储方式。 程序区 静态存储区 动态存储区 程序开始运行时分配空间,运行结束时释放 主要存放全局变量和静态局部变量 根据需要动态分配,动态释放的区域 主要存放动态局部变量和现场保护等 用户区 2、局部变量的存储方式 每个局部变量在定义时可以指定其存储方式,即对每个局部变量的定义除定义其数据类型外,还应定义其存储方式。定义存储方式用auto(自动的)static(静态的)。如: int f1() int f2() { auto int a=1; {static int b=1; ┊ ┊ } } 缺省时为auto 动态局部变量在函数调用时分配、赋初值,调用结束时释放。 静态局部变量在第一次调用时分配、赋初值,调用结束时不释放,其单元及其值仍保留,下次调用时不重新分配,不重新赋初值。 在实际应用中,如果希望在函数调用结束后仍保留某个局部变量的值给下次调用时使用,则可定义该变量为静态的。 例:编写一个函数计算: y= 2x-1 第一次计算 3x+1 第二次计算 4x+2 其他 float f ( float x) main() { float y; { static int n=1; printf(“%f”,f(2.0)); if(n==1)y=2*x-1; printf(“%f”,f(1.0)); else if(n==2)y=3*x+1; printf(“%f”,f(3.0)); else y=4*x+2; } n++; return(y); } ?????? 3 、全局变量的存储方式 全局变量都是静态存储方式,不允许用auto来定义全局变量。 可以用static来定义全局变量。如: static int x; 静态全局变量(内部的) int y; 非静态全局变量(外部的) 对于非静态全局变量,其它文件中的函数只要用extern加以外部说明,就可以访问。 而对于静态全局变量,只局限在本文件中的所有函数访问,其它文件中的函数即使用extern加以外部说明,也不能访问。 int y; main() { y=0; } int f1() { y=2; } extern int y; int f3() { y=10; } int f4() { y=100; } static int y; 7.8 内部函数和外部函数 用extern加以定义的函数称外部函数 。 用extern加以定义的函数称外部函数 。 extern int f1() static int f2() { { ┊ ┊ } } 缺省为外部函数。 外部函数可以为其他文件中的函数所调用。 内部函数只为本文件中的函数所调用(保护)。 main() { f3(); 允许 } int f1() { f4(); 不允许 } extern int
您可能关注的文档
最近下载
- 土地资源调查课件.pptx VIP
- 2025教学主任及教秘专项培训班考核试卷含答案.docx
- QC∕T 948-2013 汽车顶部装载装置.pdf VIP
- 八上名著《红岩》:故事梗概+知识点+考点大集合.doc VIP
- 《劳动经济学讲义》课件.ppt VIP
- ISO各体系认证审核前准备资料清单.doc VIP
- 巧虎目录清单.doc VIP
- 销售管理专业《销售案例研究 ( 实践 ) 》课程调研报告样本.pdf VIP
- 2025年新精通版(三年级起)英语三年级上册课件 Unit 2 Lesson 3 .pptx VIP
- 场效应MOS管AK4435参数-9.1A-30V封装SOP-8.pdf VIP
文档评论(0)