- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C课件ch5
第5章 函数 5.1 函数的定义 5.2 函数的调用与参数传递 5.3 函数的嵌套与递归 5.4 带默认形参值的函数 5.1 函数的定义 一、 函数的作用 程序员在设计一个复杂的应用程序时,往往也是把整个程序划分为若干个功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样搭起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。在C++中,这些模块就是一个个的函数。 函数的本质有两点: (1) 函数由能完成特定任务的独立程序代码块组成,如有必要,也可调用其它函数,来产生最终的输出。 (2) 函数内部工作对程序的其余部分是不可见的。 二、函数的定义 C++中函数定义的格式为: 函数类型 函数名([形式参数列表]) { [函数体] } 其中: 函数类型——返回值的类型,若函数不需要返回值,则可以用void来说明 函数名——是任意合法的C++标识符,并以能代表该函数所执行的功能为宜。 形式参数列表——用以声明实现该函数所需的数据.形式为: 类型1 形参1,类型2 形参2,…,类型n 形参n 注:形式参数列表可以为空,但一对圆括号“()”不可以省略。 函数体——是完成该功能所需要的语句序列,以一对大括号“{}”包围。 此外,有返回值的函数,其return语句的形式为: return (表达式); 注:在函数体中,return语句可以有多个,但是只有一个return语句会执行,并结束函数调用。 三、 函数原型声明 原型声明的语法形式为: 函数类型 函数名([形参列表]); 其中形参列表的形式为: 类型1 [形参名1], 类型2 [形参名2],…, 类型n [形参名n] 注:在原型声明时,仅给出该函数的首部,并且形参的名字可以省略。 #includestdio.h void Fun(int *y) { printf(*y = %d\n, *y); *y += 20; printf(*y = %d\n, *y); } main() { int x = 10; printf(x = %d\n, x); Fun(x); printf(x = %d\n, x); } 5.2 函数的调用与参数传递 主调函数:调用其它函数的函数称为~ 被调函数:相应的被调用的函数称为~ 一、 函数调用形式 函数名(实参列表) 注:实参列表中要给出与函数定义(包括原型声明)时所声明的相同个数和类型的实参,如果函数定义时没有声明形参,实参列表为空,但圆括号不可以省略。 函数调用可以有三种表现形式: 函数调用语句 函数调用表达式 函数调用作参数 注:后两种方式仅适用于具有返回值的函数。 #includestdio.h void fun1(int x) { x=20; } void fun2(int b[4]) { int j; for(j=0; j4; j++) { b[j]=j; } } 5.2 函数的调用与参数传递 二、函数调用执行过程 三、函数的参数传递 1. 形式参数 形式参数是指在函数的定义或原型声明时函数名后的一对圆括号中所列的参数 在函数被调用前形式参数只是起到标识该函数参数个数和类型的作用。 形式参数可以是任意类型的普通变量、数组、指针以及引用。 2. 实际参数 实际参数是指在调用函数时函数名后的一对圆括号中所列的参数。 在函数被调用时,形式参数被创建并由实际参数完成其初始化工作,称为参数传递。 参数传递时,实际参数的个数和类型必须与形式参数相一致,并且按出现在圆括号中的位置一一对应地进行传递。 实际参数可以是常量(包括地址常量)、已初始化或赋值的变量、数组、指针或是能取得运算结果的表达式,甚至是具有返回值的函数调用。 参数传递方式 值传递 形参是指针、数组、引用以外的基本变量时,形实结合为值传递(单向传递) 即形参的变化不会影响到实参。 【例5-5】现有商场进行打折促销,当输入某一价格时即输出8.5折后的价格,编写函数完成上述功能。 double discount(double a) { a*=0.85; return a; } void main() { double price1,price2; cout请输入原价:; cinprice1; price2=discount(price1); cout原价为:price1endl; cout打折后为:price2endl; } 参数传递方式 2. 地址传递 当形参
您可能关注的文档
最近下载
- 成都电子科技大学实验中学新初一均衡分班语文试卷.doc VIP
- 成都电子科技大学实验中学新初一分班数学试卷含答案.doc
- 固体废物热值测定实验.doc VIP
- 14J936变形缝建筑构造.pptx VIP
- ZrO2-III 液晶显示氧化锆氧量分析仪说明书.pdf VIP
- 轻松学中医系列——《药性赋》选讲-曾培杰.docx
- Schneider Electric施耐德EvoPacT™ HVX 12kV真空断路器 全新一代数字化中压配电产品 操作手册安装和用户指南(中文).pdf
- 数控车削加工技术课程思政教学改革实践案例.docx VIP
- KORG科音Pa700快速说明书.pdf
- 2025年6月浙江省杭州市高一地理学考模拟试卷 1 .pdf VIP
文档评论(0)