在这一章中将介绍C语言程序的函数公开课一等奖优质课大赛微课获奖课件.pptx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 这一章 中将 介绍 语言 程序 函数 公开 一等奖 优质课 大赛 获奖 课件
- 资源描述:
-
第6章 函数第1页第1页 在这一章中将简介在这一章中将简介C语言程序函数,函数语言程序函数,函数是一段连续程序代码组合,它用来完毕一定功是一段连续程序代码组合,它用来完毕一定功效,一个效,一个C语言程序往往由诸多个函数构成,语言程序往往由诸多个函数构成,函数之间并列排放,互相调用,协同工作,完函数之间并列排放,互相调用,协同工作,完毕一个大任务。毕一个大任务。第2页第2页6.1函数定义函数定义6.2函数参数与返回值数函数参数与返回值数6.3变量类型变量类型6.4函数调用函数调用第3页第3页6.1函数定义函数定义事事实实上上读读者者对对函函数数并并不不陌陌生生,C语语言言中中有有大大量量内内部部函函数数,程程序序主主体体main就就是是一一个个函函数数,除除此此之外在程序中还能够定义自己函数。之外在程序中还能够定义自己函数。返返回回类类型型函函数数名名称称(类类型型1参参数数1,类类型型2参参数数2,)/函数体函数体返返回回类类型型是是函函数数值值数数据据类类型型,能能够够是是C语语言言中中char、int、short、long、float、double等等任任何何一一个个基基本本数数据据类类型型。返返回回类类型型能能够够省省略略不不写写,如如不写则默认为不写则默认为int类型。类型。第4页第4页函数名称是用户自己定义名称,与变量命名函数名称是用户自己定义名称,与变量命名规则一样。规则一样。函数能够有很多参数,每一个参数都有一个函数能够有很多参数,每一个参数都有一个类型及名称,它们是函数变量,不同变量对应函类型及名称,它们是函数变量,不同变量对应函数值往往不同,这是函数本质所在,这些参数称数值往往不同,这是函数本质所在,这些参数称为函数形式参数。为函数形式参数。函数体是函数程序代码,它们包含在一对大函数体是函数程序代码,它们包含在一对大括号内。括号内。函数被设计成为完成某一个功效一段程序代函数被设计成为完成某一个功效一段程序代码或模块,码或模块,C语言把一个问题划分成多个模块,分语言把一个问题划分成多个模块,分别对应一个个函数,一个别对应一个个函数,一个C语言程序往往有多个函语言程序往往有多个函数组成,最简朴数组成,最简朴C语言程序只有一个函数,那就是语言程序只有一个函数,那就是main函数自己。函数自己。第5页第5页6.2函数参数与返回值数函数参数与返回值数6.2.1函数参数在在调调用用函函数数时时,形形式式参参数数要要求求了了函函数数需需要要数数据据个个数数及及其其类类型型,实实际际参参数数必必须须在在类类型型与与数数目上与形式参数同样,普通规则是:目上与形式参数同样,普通规则是:(1)形形式式参参数数是是函函数数内内部部变变量量,有有名名称称及及类类型型。形形参参出出现现在在函函数数定定义义中中,在在整整个个函函数数体体内内都能够使用,离开该函数则不能使用;都能够使用,离开该函数则不能使用;(2)实实际际参参数数个个数数与与类类型型必必须须与与形形式式参参数数一一致致,实实际际参参数数能能够够是是变变量量,常常数数、表表示示式式、甚甚至是一个函数;至是一个函数;第6页第6页(3)当实际参数是变量时,它不一定要与形当实际参数是变量时,它不一定要与形式参数同名称,实际参数变量与形式参数变量式参数同名称,实际参数变量与形式参数变量是不同内存变量,它们其中一个值改变不会影是不同内存变量,它们其中一个值改变不会影响到另外一个变量。响到另外一个变量。(4)如实际参数类型与形式参数类型不完全如实际参数类型与形式参数类型不完全一致,最少是能够赋值转换,不然会发生一致,最少是能够赋值转换,不然会发生“类类型不匹配型不匹配”错误;错误;第7页第7页(5)函函数数调调用用中中发发生生数数据据传传送送是是单单向向,即即只只能能把把实实参参值值传传送送给给形形参参,而而不不能能把把形形参参值值反反向向地地传传送送给给实实参参,因因此此在在函函数数调调用用过过程程中中,形形参参值发生改变,而实参中值不会改变;值发生改变,而实参中值不会改变;(6)函函数数能能够够没没有有参参数数,但但此此时时圆圆括括号号不不可可缺乏;缺乏;第8页第8页6.2.2函数返回值 函函数数值值是是指指函函数数被被调调用用之之后后,执执行行函函数数体体中中程程序序段段所所取取得得并并返返回回给给主主调调函函数数值值。普普通通函函数数计计算算后后总总有有一一个个返返回回值值,通通过过函函数数内内部部return语句来实现这个返回值,格式是:语句来实现这个返回值,格式是:return表示式;表示式;return返返回回一一个个数数据据类类型型与与函函数数返返回回类类型型一一致致表示式,该表示式值就是函数返回值。表示式,该表示式值就是函数返回值。第9页第9页6.2.3没有返回值函数1没有返回值函数没有返回值函数函函数数也也能能够够没没有有返返回回值值,这这种种函函数数返返回回类类型被定义成型被定义成void类型,类型,例下列面函数:例下列面函数:voidSayHello()puts(“Hello,everyone!”);void类类型型函函数数中中也也能能够够有有return语语句句,但但return后后面面不不能能够够有有任任何何表示式,比如:表示式,比如:voidfun(floatx)if(x0)return;/在在xy?x:y);则则调调用用Max函函数数后后值值不不拟拟定定,比比如如Max(1,2)值值不不一定是。一定是。第11页第11页6.2.4函数调用函函数数调调用用是是比比较较简简朴朴,调调用用自自己己编编写写函函数数就就象象调调用用C语语言言内内部部函函数数同同样样。有有返返回回值值函函数数能能够够放放在在适适当当任任何何一一个个表表示示式式中中去去计计算算,当当然然也也能能够够单单独独作作为为一一条条语语句句执执行行。而而void类类型型函函数数不不能能用用在在任任何何一一个个表表示示式式中中去去参参与与计计算算,只只能能作作为为单单独独一一条条语语句句执执行。行。但但C语语言言中中要要求求,函函数数必必须须先先定定义义才才干干够够调调用用,既既在在调调用用函函数数时时编编译译器器必必须须已已经经事事先先知知道道该该函函数数参参数结构,不然编译会犯错误。数结构,不然编译会犯错误。第12页第12页 对对库库函函数数调调用用不不需需要要再再作作阐阐明明,但但必必须须把把该该函函数数头头文文献献用用include命命令令包包括括在在源源文文献献前前部部,事事实上实上include命令包括头文献中就是库函数阐明。命令包括头文献中就是库函数阐明。main函函数数是是C语语言言中中主主函函数数,程程序序是是从从main函函数数第第一一条条语语句句开开始始,当当main最最后后一一条条语语句句执执行行完完毕毕后后,main函函数数执执行行完完毕毕,这这样样整整个个程程序序就就执执行行完完毕毕。一一个个复复杂杂C程程序序中中main函函数数要要去去调调用用别别函函数数,而而被被main调调用用函函数数又又有有也也许许再再去去调调用用别别函函数数,这样形成函数层层调用,从而完毕一个复杂任务。这样形成函数层层调用,从而完毕一个复杂任务。第13页第13页6.3变量类型变量类型6.3.1局部变量局部变量 局局部部变变量量也也称称为为内内部部变变量量。局局部部变变量量是是在在函函数数内内作作定定义义阐阐明明。其其作作用用域域仅仅限限于于函函数数内内,离开该函数后再使用这种变量是非法。离开该函数后再使用这种变量是非法。第14页第14页关于局部变量作用域还要说明以下几点:关于局部变量作用域还要说明以下几点:(1)函数中定义变量只能在函数中使用,函数中定义变量只能在函数中使用,不能在其它函数中使用。同时,一个函数中也不能在其它函数中使用。同时,一个函数中也不能使用其它函数中定义变量。各个函数之间不能使用其它函数中定义变量。各个函数之间是平行关系,每个函数都封装了一块字节区域,是平行关系,每个函数都封装了一块字节区域,互不相干。互不相干。(2)形参变量是属于被调函数局部变量,形参变量是属于被调函数局部变量,实参变量是属于主调函数局部变量。实参变量是属于主调函数局部变量。(3)允许在不同函数中使用相同变量名,允许在不同函数中使用相同变量名,它们代表不同对象,分派不同单元,互不干扰,它们代表不同对象,分派不同单元,互不干扰,也不会发生混同。例也不会发生混同。例6_3中中sum函数函数m、s变量变量与与main函数函数m、s变量同名,但它们是不同变变量同名,但它们是不同变量。量。第15页第15页6.3.2全局变量局变量1全局变量作用域全局变量作用域全全局局变变量量也也称称为为外外部部变变量量,它它是是在在函函数数外外部部定定义义变变量量。它它不不属属于于哪哪一一个个函函数数,它它属属于于一一个个源源程程序序文文献献。其其作作用用域域是是整整个个源源程程序序。全全局局变变量量普普通通在在程程序序开开头头部部分分定定义义,任任何何一一个个函函数数都都能能够够使使用用它它,当当在在一一个个函函数数中中改改变变了了全全局局变变量量值值时时,会会直接影响到其它函数访问值。直接影响到其它函数访问值。全全局局变变量量也也能能够够在在程程序序别别位位置置定定义义,只只要要它它在在函函数数之之外外就就行行,但但在在使使用用它它时时必必须须让让编编译译器器已已经经知知道道它它是是什什么么,因因此此也也像像函函数数阐阐明明那那样样,在在程程序序使使用用它它之之前前必必须须先先说说名名变变量量,阐阐明明办办法法是是用用extern申明变量。申明变量。第16页第16页2全局变量与局部变量全局变量与局部变量前面已经讲到全局变量作用域是整个程序,前面已经讲到全局变量作用域是整个程序,它在程序开始时就存在,任何函数都能够访问它在程序开始时就存在,任何函数都能够访问它,而且全部函数访问同名称全局变量是同一它,而且全部函数访问同名称全局变量是同一个变量,全局变量只有在程序结束时才销毁。个变量,全局变量只有在程序结束时才销毁。局部变量是函数内部范围内变量,当执行局部变量是函数内部范围内变量,当执行此函数时才有效,退出函数后局部变量就销毁。此函数时才有效,退出函数后局部变量就销毁。不同函数之间局部变量是不同,哪怕同名字也不同函数之间局部变量是不同,哪怕同名字也互不相干。互不相干。第17页第17页但存在一个问题,就是假如一个函数内部局但存在一个问题,就是假如一个函数内部局部变量与程序全局变量同名字,那么函数访问到部变量与程序全局变量同名字,那么函数访问到变量是函数自己局部变量呢还程序全局变量?这变量是函数自己局部变量呢还程序全局变量?这种情况下种情况下C语言要求局部变量优先。语言要求局部变量优先。局部变量有局部性,这使得函数有对立性,局部变量有局部性,这使得函数有对立性,函数与外界接口只有函数参数与它返回值,使程函数与外界接口只有函数参数与它返回值,使程序模块化更突出,这么有利于开发大型程序。全序模块化更突出,这么有利于开发大型程序。全局变量含有全局性,是实现函数之间数据互换公局变量含有全局性,是实现函数之间数据互换公共路径,但大量地使用全局变量会破坏函数独立共路径,但大量地使用全局变量会破坏函数独立性,造成程序模块化程度下降,因此要尽也许降性,造成程序模块化程度下降,因此要尽也许降低使用全局变量,多使用局部变量,函数之间应低使用全局变量,多使用局部变量,函数之间应尽也许保持其独立性,函数之间最好只通过接口尽也许保持其独立性,函数之间最好只通过接口参数来传递数据。参数来传递数据。第18页第18页6.3.3静态变量变量静静态态变变量量是是一一个个在在变变量量定定义义时时就就分分派派存存储储单单元元并并始始终终保保持持不不变变变变量量,直直至至整整个个程程序序结结束束。静静态态变变量量用用static来来定定义义,静静态态变变量量也也称称为为static变变量量,没没有有用用static定定义义变变量量就就称称为为是是动动态变量或普通变量。态变量或普通变量。静静态态变变量量也也能能够够分分全全局局静静态态变变量量与与局局部部静静态态变变量量变变量量。全全局局static变变量量与与全全局局普普通通变变量量在在只只有有一一个个源源程程序序系系统统中中没没有有什什么么区区别别,只只有有在在多个源程序文献系统中才有区别。多个源程序文献系统中才有区别。第19页第19页6.3.4变量初始值变量初始值C语言对于普通函数内部局部变量、静态变语言对于普通函数内部局部变量、静态变量以及全局变量初始值设置是不同。对于普通量以及全局变量初始值设置是不同。对于普通函数内部局部变量假如在定义时没有设置它初函数内部局部变量假如在定义时没有设置它初始值,则变量值是随机,但对于静态变量或全始值,则变量值是随机,但对于静态变量或全局变量,假如在定义时没有设置它初始值则变局变量,假如在定义时没有设置它初始值则变量值是量值是0。在程序设计中要确保变量初始化,尤其是在程序设计中要确保变量初始化,尤其是对局部变量初始化,不然会得到预想不到结果。对局部变量初始化,不然会得到预想不到结果。第20页第20页6.4函数调用函数调用6.4.1嵌套调用在在C语语言言中中,所所有有函函数数定定义义,包包括括主主函函数数main在在内内,都都是是平平行行。函函数数之之间间允允许许互互相相调调用用,也也允允许许嵌嵌套套调调用用。习习惯惯上上把把调调用用者者称称为为主主调调函函数数。main函函数数是是全全程程序序主主函函数数,它它能能够够调调用用其其它它函函数数,而而不不允允许许被被其其它它函函数数调调用用。C程程序序执执行行总总是是从从main函函数数开开始始,完完毕毕对对其其它它函函数数调调用用后后再再返返回回到到main函函数数,最最后后由由main函函数数结结束束整个程序。整个程序。第21页第21页嵌嵌套套调调用用就就是是一一个个函函数数调调用用另另外外一一个个函函数数,被被调调用用函函数数又又进进一一步步调调用用另另外外一一个个函函数数,形形成成一一层层层层嵌嵌套套关关系系,一一个个复复杂杂程程序序存存在在多多层层函函数数调调用用。如如图图6-10所所表表示示展展示示了了这这种种关关系系,main函函数数调调用用函函数数A,在在A中中又又调调用用函函数数B,B又又调调用用C,在在C完完毕毕后后返返回回B调调用用处处,继继续续B执执行行,之之后后B执执行行完完毕毕返返回回A调调用用处处,A又又接接着着往往下下执执行行,随随后后A又又调调用用D函函数数,D执执行行完完后后返返回回A,A执执行行完完后后返返回回main函函数数,main接接着着往往下下执执行行,main完毕后程序就结束了。完毕后程序就结束了。第22页第22页图6-10函数嵌套调用第23页第23页相应程序结构下列:相应程序结构下列:voidD()voidC()voidB()C();voidA()B();D();voidmain()A();第24页第24页函函数数调调用用能能够够这这样样一一层层层层地地嵌嵌套套下下去去,但但函函数数调调用用普普通通不不能能够够出出现现循循环环,如如图图6-11所所表表示示是是一一个个循循环环,函函数数X调调用用函函数数Y,Y又又反反过过来来调调用用X,之之后后X又又调调用用Y,没没完完没没了了,形形成死循环。成死循环。第25页第25页图6-11函数循环第26页第26页6.4.2递归调用上面讲到函数普通不能形成循环调用,但上面讲到函数普通不能形成循环调用,但函数能够自己调用自己,既自己形成循环调用,函数能够自己调用自己,既自己形成循环调用,这种自己调用自己调用称为递归。递归调用事这种自己调用自己调用称为递归。递归调用事实上是一个循环,这种调用关键是要设置好循实上是一个循环,这种调用关键是要设置好循环条件,让循环进行到一定程度时能一层层地环条件,让循环进行到一定程度时能一层层地退出,不能形成死循环,因此这一类程序编写退出,不能形成死循环,因此这一类程序编写要格外小心。要格外小心。第27页第27页展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




在这一章中将介绍C语言程序的函数公开课一等奖优质课大赛微课获奖课件.pptx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/5173291.html