版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章函数1.熟练掌握用户函数的结构、设计方法和调用方法;2.熟练掌握函数调用中数据传递的几种方法;3.会设计简单的函数和函数的嵌套调用学习目标
根据变量所占存储单元的时间来划分,可以将其分为静态
存储变量和动态存储变量。
静态存储变量在程序运行过程中一直占有固定的存储单元,
直到程序运行结束。
动态存储变量是在程序运行过程中由系统动态地分配和回收的。
因此,全局变量是静态存储的变量,在程序运行过程中,它们的存储单元地址是不变的。而局部变量,它们是动态存储的变量。只有在调用函数时,系统才为其分配存储单元,一旦调用结束,该存储单元即由系统收回。当再次调用函数时,系统将重新为它们分配存储单元,二次分配的存储单元可能是不同的。6.6动态存储变量与静态存储变量C语言提供四种存储类型说明符,用于在定义变量时指定不同的变量存储方式,与类型说明符配合使用。存储类型说明符:
auto、static、register、extern它们分别对应自动变量、静态变量、寄存器变量和外部变量。存储类型说明符使用格式:存储类型说明符类型说明符变量名1,变量名2,……;1.auto变量用存储类型说明符auto修饰的局部变量称为为自动变量,自动变量是动态存储的变量。C语言规定,在定义局部变量时,如果缺省存储类型说明符,则默认其为auto变量。由于全局变量是静态存储的变量,所以在定义全局变量时,不能使用存储类型说明符auto。
【例6-14】通过将局部变量定义为静态存储变量的方法计算1!,2!,….n!。
2.用static将局部变量定义为静态存储的变量
虽然局部变量是动态存储的变量,但可以用存储类型说明符static将其定义为静态存储的变量。这样,一旦系统为其分配了存储单元,就一直由该变量占有该存储单元,直到程序运行结束才将其收回。
longfac(intk){staticlongf=1;f=f*k;returnf;}main(){inti,n;printf("Pleaseinputaninteger:\n");scanf("%d",&n);for(i=1;i<=n;i++)printf("%d!=%ld\n",i,fac(i));}调用结束时,保留静态存储变量f的当前值作为下次调用时的初始值
第i次调用函数fac(),得到的是i!的值3.register变量为了减少访问内存变量所需的时间,C语言允许将局部变量的值放在CPU的寄存器中。register变量是动态存储的变量。实际上,现在的优化编译系统能自动识别使用频繁的变量,并将其存放在寄存器中,不必再由编程人员定义register变量。【例6-15】存储类型说明符extern应用举例。
#include<stdio.h>
intmax(intx,inty){intz;z=(x>y)?x:y;returnz;}
voidmain(){
externa,b;
printf(“%d\n”,max(a,b));}inta=13,b=14;4.用extern声明全局变量在C程序中,可以通过存储类型说明符extern扩大全局变量的作用域。extern声明全局变量a、b,从而使它们的作用域扩大为从本行直至最后的所有语句,否则,程序将出错
存储类型说明符extern在多个源文件组成的程序中的应用
源文件1源文件2inta,b,c;
externinta;main()
intb,c;{
f(inta,intx)
…;{}……;}
在源文件1中定义了全局变量a、b、c,其作用域为整个源文件1。源文件2一开始就用extern声明变量a,表明其中的变量a与源文件1中的变量a是同一个变量。而源文件2中的全局变量b,c未用extern声明,它们的作用域为整个源文件2,和源文件1中的变量b,c是不同的变量。如果不希望在其它的源文件中使用源文件1的全局变量a,可以用staticinta;定义全局变量a,在其前面冠以static,这样,只有源文件1可以使用全局变量a。
6.7内部函数和外部函数一.内部函数如果一个函数只能被本源文件中的其它函数所调用,则称为内部函数。定义内部函数的格式:
static类型标识符函数名(形参表)例如:
staticintf(inta,intb);使用内部函数,可以使函数只局限于所在源文件,允许在不同的源文件中使用同名的内部函数。二.外部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44941-2024植物照明术语
- 2025版第四编合同法合同担保业务风险防范与法律解读3篇
- 2025年度紧急口译响应及协调服务合同3篇
- 噪音污染红线管理办法
- 采铜矿工程文明施工合同
- 石油天然气行业人员信息管理规章
- 实验室危险品使用与储存规定
- 连锁店管理锦囊员工培训
- 咖啡公司税务管理要点
- 配送责任协议
- 特色农产品超市方案
- 2024国有企业与民营企业之间的混合所有制改革合同
- 二次函数的几何性质(于特)(1)名师公开课获奖课件百校联赛一等奖课件
- GB/T 30595-2024建筑保温用挤塑聚苯板(XPS)系统材料
- 2024年人教版八年级地理上册期末考试卷(附答案)
- 医学免疫学-医学检验专业学习通超星期末考试答案章节答案2024年
- 《稻草人》阅读题及答案
- 独立基础土方开挖施工方案
- (建筑工程管理)常熟市建设工程施工图审查工作
- 国家职业技术技能标准 X2-10-07-17 陶瓷产品设计师(试行)劳社厅发200633号
- 瑜伽基础知识题库单选题100道及答案解析
评论
0/150
提交评论