




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章函数与预处理,5.1概述模块化程序设计基本思想:将一个大的程序按功能分割成一些小模块,特点:各模块相对独立、功能单一、结构清晰、接口简单控制了程序设计的复杂性提高元件的可靠性缩短开发周期避免程序开发的重复劳动易于维护和功能扩充开发方法:自上向下,逐步分解,分而治之,C是模块化程序设计语言,C程序结构,C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总是从main函数开始,在main中结束函数不能嵌套定义,可以嵌套调用,函数分类从用户角度标准函数(库函数):由系统提供用户自定义函数从函数形式无参函数有参函数,使用库函数应注意:1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件,函数的定义一般格式,合法标识符,函数返回值类型缺省int型无返回值void,函数体,函数类型函数名(数据类型变量名1,数据类型变量名n)说明部分语句部分,例无参函数printstar()cout“*n”;或printstar(void)coutxy;s=and(x,y);coutsab;c=add(a,b);coutsumis“c;floatadd(floatx,floaty)floatz;z=x+y;return(z);,例函数声明举例,函数的调用调用形式函数名(实参表);说明:实参与形参个数相等,类型一致,按顺序一一对应实参表求值顺序,因系统而定(),调用方式函数语句:例printstar();函数表达式:例m=max(a,b)*2;函数参数:例coutab;c=max(a,b);couty?x:y;return(z);,说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,函数参数及其传递方式形参与实参形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式,参数传递方式值传递方式(值调用)方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值特点:形参与实参占用不同的内存单元单向传递,例交换两个数,#includevoidmain()intx=7,y=11;coutx“t”yendl;coutswapped:n;swap(x,y);coutx“t”yendl;swap(inta,intb)inttemp;temp=a;a=b;b=temp;/cout“a=“ab=“ab;c=max(a,b);couty?x:y;return(z);,指针与函数,指针作为函数参数以数据的地址作为实参调用一个函数,参数传递的不是数据本身,而是数据地址。注意:(1)在主调函数中,要以指向变量的指针,即变量的存储地址作为实参来调用另一个函数。(2)被调用函数的形参必须是可以接受地址值的指针变量,而它的数据类型应与被传送的数据类型保持一致。,例:,#includeswap(int*p1,int*p2)intp;p=*p1;*p1=*p2;*p2=p;voidmain()inta,b;cinab;cout“a=”a“b=”bendl;coutsi;,intmin(int*s,intn)intmin,i;min=*s;for(i=1;imn;result=(*pf)(m,n);cout“result=”resultt;a=fact(t);coutt“!=”aendl;,方法二:递归法。,递归定义:,longfact(longn),if(n=0|n=1)return(1);elsereturn(fact(n-1)*n);,5!,5*4!,4*3!,3*2!,2*1!,1,2*1,3*2,4*6,5*24,120,回推,递推,未知,已知,未知,5.6作用域5.6.1.作用域1.函数原型作用域函数原型中所作的函数参数声明的作用域:起始于函数原型说明的左括号处,结束于函数原型说明的右括号处。2.块作用域块:用括号括起来的一段代码区域。作用区域:起始于标识符被定义的地方,结束于块的右括号。3.函数作用域作用区域:起始于函数中标识符定义的地方,结束于函数体的右括号。4.类作用域5.文件作用域在函数或类之外说明的标识符具有文件作用域。作用区域:从说明点开始到文件末尾处。,#includeinti;voidmain()i=5;inti;i=7;cout“i=”iendl;cout“i=”ib?a:b;cout“c=”cy?x:y;returnz;voidmain()coutmax(a,b)endl;inta=13,b=-8;,例:,externinta,b;,定义说明次数:只能1次可说明多次位置:所有函数之外函数内或函数外分配内存:分配内存,可初始化不分配内存,不可初始化,全局变量为函数间传递数据提供了一种新的方法。,#includeintmax,min;voidfind(int*s,intn)max=min=*s;for(inti=0;isi)min=si;if(maxsi)max=si;voidmain()inta5=34,2,56,4,27;find(a,5);cout“min=”min“,max=”max;,应尽量少使用全局变量,因为:全局变量在程序全部执行过程中占用存储单元降低了函数的通用性、可靠性,可移植性降低程序清晰性,容易出错,5.7变量的存储类型,5.7.1变量的存储类型,存储方式静态存储:程序运行期间分配固定存储空间动态存储:程序运行期间根据需要动态分配存储空间内存用户区,对一个变量的定义,需要指出两种属性:存储类型和数据类型。因此,变量的一般定义形式是:存储类型数据类型变量名;变量的存储类型规定了变量的存在时间,即生存期。,具体有四种存储类型:自动类(auto)寄存器类(register)静态类(static)外部类(extern),生存期静态变量:从程序开始执行到程序结束动态变量:从包含该变量定义的函数开始执行至函数执行结束,5.7.2局部变量的存储方式,1.自动(auto)存储方式autointa;说明:自动变量的作用范围局限于定义它的函数。关键字auto通常被缺省,不做专门说明的局部变量均为自动变量。在不同的函数中自动变量可以使用相同的名称,它们的类型可以相同或相异,彼此互不干扰。自动变量是随函数的调用而存在和消失的,存储在动态存储区,2.静态的(static)存储方式staticinta;说明:定义时使用关键字static说明的局部变量称为静态局部变量。静态局部变量属于静态存储类型,被分配在静态存储区。对静态局部变量的初始化是在编译阶段完成的,运行时即使所在函数调用结束,其所占空间也不被释放,仍保存其值。以后在每次调用所在函数时,不再对其初始化而是直接使用上次调用完成时的结果。若静态局部变量没有赋初值,在编译时自动被赋值为0。静态局部变量的作用范围局限于定义它的函数。即使在内存中存在,其他函数也不得使用。,#includeintf(inta)autointb=0;staticintc=3;b+;c+;return(a+b+c);voidmain()inta=2,i;for(i=0;i3;i+)coutf(a)endl;,例:自动变量与静态局部变量,3.寄存器(register)存储方式registerinta;说明:寄存器变量与自动变量的性质基本相同,也具有局部性和动态性。只有自动变量和形参可以作为寄存器变量,其他变量(全局变量、局部静态变量)不可以。寄存器变量的数目有限制,不能定义太多。,5.7.3全局变量的存储方式,全局变量采用静态存储
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业务培训与人才培养责任承诺书9篇
- 2025年湖南省各市州湘能农电服务有限公司联合招聘780人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年西安明珠电力安装工程有限公司招聘(2人)模拟试卷及参考答案详解一套
- 采购管理标准化流程及工具
- 合同签订关键点风险防控检查清单
- 2025年甘肃省河西学院附属张掖人民医院非事业编制护理岗位工作人员招聘20人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025年河北承德医学院附属医院招聘工作人员20名考前自测高频考点模拟试题及完整答案详解1套
- 科技研发成果承诺函6篇范文
- 食品安全检测达标承诺书9篇范文
- 租房人员安全培训课件
- 《路基构造》课件
- 2025年秋新北师大版数学二年级上册全册教案
- 2025年排污许可试题及答案
- 《大学美育(AIGC版微课版)》课件 项目二 绘画之美
- .新课7 必修第一册Unit4 Loo.king good,feeling good (词汇+课文)(译林版2020)(解析版)2025年初升高英语无忧衔接(通.用版)
- 复发转移性宫颈癌诊疗指南(2025版)解读课件
- 检验科质量标准手册
- 工业煤气安全知识培训课件
- 初三数学二次函数测试试卷及答案
- 急诊科多发创伤抢救流程指南
- 曲臂式高空作业车专项施工方案
评论
0/150
提交评论