《高级语言程序设计》课件第6章函数.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《高级语言程序设计》课件第6章函数.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计 高级语言程序设计课件第6章 函数 高级 语言程序设计 课件
- 资源描述:
-
1、第6章 函数6.1 函数的定义6.2 函数的调用6.3 数组与函数6.4 变量的作用域6.5 变量的生存期第6章 函数6.1 函数的定义第6章 函数函数在使用时也需要遵循“先定义、后使用”的原则。定义函数就是对函数功能的确立。其一般格式为函数的定义分为函数首部和函数体两部分。函数首部即“”以上的一行说明,包括返回值类型、函数名、形式参数列表;函数体则是从“”开始,到“”结束的代码块,函数体又分为声明部分和语句部分。一个函数实际上就是“输入处理输出”模型的一种具体表现。C语言程序的运行都是从主函数开始并且在主函数结束的;两个标准库函数,分别是printf函数和scanf函数,通过使用预编译命令“
2、#include”包含标准输入/输出头文件,即可直接调用这两个函数;程序中还出现了六个用户自定义函数,分别是start函数、end函数、sum函数、avg函数、max函数和min函数,这几个函数必须在源文件中独立定义之后,方可使用。程序在运行过程中,主函数可以通过函数名调用不同的函数,即将程序的控制权交给被调用函数,并执行被调用函数的函数体,以实现被调用函数的特定功能。被调用函数运行结束后,程序的控制权又返回到主函数的调用位置,继续执行主函数体内的后续语句。第6章 函数6.1.1 函数名函数名即函数的标识符,其命名规则与C语言中其他标识符的命名规则一致。程序是通过函数名来找到该函数所在内存单元
3、的,从而实现对该函数的调用。程序首先通过函数名main找到主函数的内存单元,依次执行单元内的指令;在主函数的执行过程中还会根据不同的被调函数名,找到相应的被调函数的内存单元,执行被调函数。6.1.2 返回值类型与return语句函数的类型即定义时的返回值类型,一般情况下,函数完成特定的功能或者数据处理之后,会将处理结果反馈给调用者(也称为主调对象)。这个被反馈的结果称为返回值,通过return语句实现;函数的返回值类型则用来说明该结果的数据类型。关于返回值类型与return语句的使用,有以下约束条件:(1)在绝大多数情况下,函数定义的返回值类型与return语句中返回值的数据类型是一致的。(2
4、)在定义函数时,如果不规定返回值类型,则默认该函数的返回值类型为int型。(3)如果调用某个函数只是为了实现一组特定的操作,而不需要获得反馈结果,可将该函数的返回值类型定义为void类型,函数体内不需要使用return语句。(4)函数定义的返回值类型与return语句中返回值的数据类型不一致时,则以函数定义的返回值类型为准,将return语句中的返回值数据进行强制类型转换。第6章 函数(5)return语句中的返回值可以是常量,也可以是变量,还可以是表达式。(6)一条return语句只能有一个返回值;一个函数可以包含多条return语句,但是程序运行过程中只能有一条return语句会被执行。(
5、7)return语句的一般格式为“return(表达式);”表达式的括号也可以省略。(8)一旦执行return语句,把处理结果返回给主调对象,将控制权交还给主调对象,并结束函数的调用。6.1.3 函数的形参与实参在大多数情况下,主调对象和被调函数之间需要通过各自的参数实现数据传递。函数的参数分为形式参数(简称“形参”)和实际参数(简称“实参”)。在定义函数时,函数首部中的参数为形参;在调用函数时,调用表达式中的参数为实参。形参与实参之间的关系,有如下约束条件:(1)在定义函数时,需要在函数首部说明形参的类型与名称。如果有多个形参,参数之间需要用逗号间隔。如果函数调用时不需要主调对象传递数据,则
6、在定义函数时可以没有形参,但函数名后的括号不能省。(2)在调用函数时,调用表达式中的实参必须与形参数目一致,如果有多个实参,参数之间需要用逗号间隔。如果被调用函数没有定义形参,则在函数调用表达式中不需要实参,但函数名后的括号不能省略。(3)实参可以是常量,也可以是变量。第6章 函数(4)实参与形参不但数目一致,类型也应该相同。如果实参与形参的数据类型不同,则以形参的类型为准,将实参的类型强制转换为形参的类型后,再向形参传递数据。6.1.4 函数间的数据传递函数间的数据传递,指的是主调函数与被调函数之间的数据传递。主调函数通过实参向被调函数传递数据,而被调函数也可以通过返回值向主调函数传递数据,
7、因此,可以认为函数间的数据传递是双向的。无论是由主调函数的实参向被调函数的形参传递数据,还是由被调函数的返回值向主调函数传递数据,均要求数据间的类型匹配、数目一致。通过实参向形参传递数据,不是用实参去替代被调函数的形参,而是将实参的值按顺序逐一赋值给对应的形参变量。因此在被调函数中,形参的改变不会对实参产生影响。这样的传递也称为“值传递”。6.1.5 函数体函数体是为实现函数功能而编写的代码块,由若干条语句组成。函数体可以分为声明部分和语句部分。根据C语言程序“先定义、后使用”的原则,在执行函数体以实现功能的过程中,对于函数需要使用的变量,要首先在函数的声明部分定义,对于函数需要调用的其他函数
8、,也必须进行声明。在函数体中如果调用标准库函数,必须使用#include指令将所需的头文件包含到源程序文件中。如果调用自定义函数,则根据定义被调函数的位置决定是否在主调函数中进行声明。如果被调函数定义在主调函数之前,则无需声明可以直接调用被调第6章 函数函数;如果被调函数定义在主调函数之后,则需要在主调函数的声明部分对被调函数进行声明。在结构化程序设计的初始阶段,可以先确定为解决问题而需要的若干功能模块(即函数),以及相互间的调用关系,然后再逐一为这些模块描述具体的功能(即函数体)。通常的做法是先以空函数的形式出现,并以函数名来标识该函数将来需要实现的功能。空函数由函数首部和一对花括号组成,即
9、函数体内为空,留待以后添加语句实现功能。调用空函数并不影响程序的正常执行,只不过空函数不实现任何功能而已。6.1.6 函数的定义与函数的声明函数的定义是确定函数功能的过程,包括定义函数名、返回值类型、形参及其类型、函数体四个部分。在程序中,所有函数都是平行的关系,定义函数时是分别进行、相互独立的。一个函数并不从属于另一个函数,不能定义在另一个函数体内,即函数不能嵌套定义。函数的声明类似于变量的定义,需要预先了解被调函数的返回值类型、函数名、参数个数及参数类型等信息,以便主调函数能够使用被调函数。至于被调函数的功能如何实现则与主调函数无关。由此可见,对于函数的声明,只需要函数首部即可。函数声明是
10、一条语句,需要以“;”来标识声明语句的结束。第6章 函数6.2 函数的调用第6章 函数6.2.1 函数的常规调用在本节之前接触到的所有函数调用的示例都属于常规调用。常规调用主要包括以下三种形式:(1)函数调用语句。被调函数由于仅完成特定的操作而无返回值,所以可以单独作为一条语句使用。(2)函数表达式。函数调用作为语句的一部分,当被调函数的返回值传递给主调函数并参与后续运算时,则将其作为赋值语句的组成部分。(3)函数参数。该形式将函数调用直接作为函数的实参。6.2.2 函数的嵌套调用虽然函数的定义是平行的、相互独立的,不能嵌套定义函数,但是允许嵌套调用函数。函数的嵌套调用的一般流程如图6-1所示
展开阅读全文