- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计教学做一体化教程_第6章_ 函数的结构与调用
1.auto局部变量 局部变量默认是auto变量,操作系统以动态方式为其分配内存。也就是说声明局部变量时默认地有关键字auto修饰,即下列声明局部变量是等价的: auto int x; int x; 当函数被调用执行时,操作系统为函数体中以及参数中的局部变量分配内存空间,函数体执行完毕,操作系统即刻释放分配给局部变量的内存 2.static局部变量 在声明局部变量时可以使用static关键字给予修饰,例如: static int x; static float y; 声明了两个static局部变量。static局部变量特点如下: 可以把static理解为:在程序运行期间,操作系统为static局部变量分配了一个固定的、不再改动的内存区域。 当函数调用执行完毕,操作系统不释放为static局部变量分配的内存空间(这一点和auto局部变量不同),函数调用结束时会保留当前static变量的值。 也就是说,函数被再次调用时,操作系统不再为static局部变量分配的内存或初始化。因此,static变量的初始值是上次函数调用保留下来的值。 3.全局变量 操作系统总是以静态方式为全局变量默分配给内存空间。全局变量的内存空间,一直到程序结束才释放所占用的内存。如果不希望在全局变量有效范围之外的地方使用关键字extern引用全局变量,就可以使用static修饰该全局变量,例如: static int number; 但需要特别注意的是,对于全局变量,操作系统总是以静态方式分配给内存空间,当程序显示地用static修饰全局变量时,static关键字意义和作用不是在内存分配方式上,而是在有效范围上,意思是有效范围固定不动了、其作用就是不允许在有效范围外使用extern引用它。 * * 5. 简单示例 例子8演示了auto局部变量和static局部变量的区别,请读者注意程序的运行效果(图6.18)。 * * 6.8.2 能力目标 巧用static局部变量。 * * 6.8.3 任务驱动 1.任务的主要内容 定义一个函数,该函数原型是long muti(int n),muti(int n)中有一个static的 long型变量chengji,初始值是1。muti函数将参数n与chengji的乘积再次存放到chengji中,并返回chengji的值。 在main函数中调用muti函数10次,得到10!。 2.任务的模板 按着任务核心内容完成模板:将【代码】替换为程序代码。 任务的模版 * * 模板的参考代码 【代码1】:static int chengji=1; 【代码2】:chengji = chengji*n; * * 3.任务小结或知识扩展 当操作系统将C程序的可执行代码(可执行文件)读入内存时,就为函数中的static局部变量分配好了内存空间(即使该函数还没有被调用执行),而且一直到程序结束才释放所分配的内存。因此可以把static理解为:在程序运行期间,操作系统为static变量分配了一个固定的、不再改动的内存区域。因此,函数调用结束时会保留下当前static变量的值,当函数被再次调用时,static变量的初始值是上次函数调用后保留下来的值。 * * 6.8.4 实践环节 利用static局部变量的特点,反复调用一个函数来计算反复调用一个函数来计算1+2+…+n的值。 定义一个函数,该函数原型是long add(int n),add中有一个static的long型变量sum,初始值是0。add函数将参数n的与sum的和再次存放到sum中,并返回sum的值。 在main函数中调用add函数100次,得到1+2+…+100的值。 (参考代码见附录A) * * 6.9.1 核心知识点 1.头文件的作用 C编译器为我们提供了许多头文件,例如stdio.h,math.h,time.h等,这些头文件均存放在编译器指定的 D:\VC6.0\VC98\INCLUDE 目录中。比如,如果想使用编译器提供的库函数fabs(double)计算某个数的绝对值,那么只需使用#include预处理指令包含头文件math.h即可。math.h头文件(见附录D)包含许多常用的数学函数的原型声明。C编译器在编译之前将#include预处理指令指定的文件复制到源文件中,这样一来我们的源文件中就有了库函数的原型声明。 6.9 变量的存储方式 * * 2. 简单示例 例子9使用#include指令包含math.h头文件,计算了8.68的正弦值、5.6的3.7次幂以及e的10.8次方。程序运行效果如图6.19所示。 * * 6.9.2
您可能关注的文档
- CR110零件图.doc
- Creo 2.0 工程命令--骨架折弯修饰草绘、螺纹、槽.doc
- Creo2.0_草绘电子教程.ppt
- CPC课件.ppt
- CRH1型动车组新司机培训内容.doc
- CRM一般模型讲解.pptx
- CROCS产品清单 20130603.ppt
- CRTSⅡ无砟轨道底座板张拉连接作业指导书.doc
- CS2024给煤机标定.ppt
- CSCF注册与去注册流程.ppt
- DB23_T 3866-2024冰上龙舟赛事组织服务规范.docx
- DB32 2163-2012 棉纱单位可比综合电耗限额及计算方法.docx
- DB32∕T 2429-2013 棉花田间生长发育观察记载规范.docx
- DB23_T 3820-2024 工业互联网综合平台数据质量管理规范.docx
- DB23_T 3474-2023非煤智慧矿山信息系统技术规范.docx
- DB3201_T 1106-2022 工程地质层划分技术规范.docx
- DB33T 2515-2022公共机构“零碳”管理与评价规范.docx
- DB3301_T 0415-2023 装修垃圾收运处置管理规范.docx
- DB3311/T 106―2019“丽水山居”民宿服务要求与评价规范.docx
- DB3201T 1127-2022 慈善捐赠受赠管理规范.docx
最近下载
- 金蝶云苍穹考试认证理论考题汇总(精华版).pdf VIP
- 钢梯设计图集15J401.pdf VIP
- 在项目规划评审会上的致辞发言3.docx
- 建筑工程图集 G410-1~2:1.5m×6.0m预应力混凝土屋面板(2004年合订本).pdf VIP
- 《康复评定技术》课件——第十七章 常见神经疾病的评定技术.ppt VIP
- 山东省水产品出口贸易现状、问题及对策分析.docx VIP
- 2025年上海黄浦区中考模拟语文试卷(含答案) .pdf VIP
- 《综合与实践:白昼时长规律的探究》教案.docx VIP
- 2025年妇产科护理技术规范.pdf VIP
- 施工现场高温季节安全防护与防暑管理培训.pptx VIP
文档评论(0)