- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计第八章函数.ppt
C程序设计 谭浩强 著 清华大学出版社 目 录 概述 函数定义的一般形式 函数的参数和函数的值 函数的调用 函数的嵌套调用 函数的递归调用 数组作为函数参数 局部变量和全局变量 变量的存储类型 内部函数和外部函数 如何运行一个多文件的程序 8.1 概述 一个C程序可由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。 例8.1 简单的函数调用 8.2 函数定义的一般形式 无参函数的定义形式 类型标识符 函数名() {声明部分 语句 } 有参函数定义的一般形式 类型标识符 函数名(形式参数表列) {声明部分 语句 } 8.3 函数参数和函数的值 形式参数和实际参数 在定义函数时函数名后面括弧中的变量名称为 “形式参数”(简称“形参”),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为”实际参数”. 说明 函数的值只能通过return语句返回主调函数。 return 语句的一般形式为: return 表达式; 或者为: return (表达式); 该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 函数值的类型和函数定义中函数的类型应保持一致。 如函数值的类型和return语句中表达式的值不一致,以函数类型为准。 8.4 函数的调用 函数调用的一般形式 函数名(实参表列); 函数调用的方式 1)函数语句 2)函数表达式 3)函数参数 对被调用函数的声明和函数原型 1)函数调用的条件 2 )函数原型 A.函数类型 函数名(参数类型1 ,参数类型2……); B.函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2 ……); 函数调用应具备的条件 被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数)。 如果使用库函数,一般还应该在本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中来。 如使用用户自己定义的函数,而且该函数与调用函数在同一文件中,一般应在主调函数中对被调用的函数作声明。 注意:定义和声明不是一回事。“定义”是对函数功能的确立,包括指定函数名,函数值类型、形参及类型等,是一个完整、独立的函数单位。 “声明”是把函数的名字、函数类型和形参的类型、个数以及顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。 说 明 以前的C版本的函数声明方式不是采用函数原型,而只声明函数名和函数类型。 如在函数调用之前,没有对函数作说明,则编译系统会把第一次遇到的该函数形式(函数定义或函数调用)作为函数的声明,并将函数类型默认为int型。 如果被调用函数的定义出现在主调用函数之前,可不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必对所调用的函数再作声明。 8.5 函数的嵌套调用 1)C语言的函数定义都是相互平行、独立的,也就是说在定义函数时,一个函数内部不能包含另一个函数。 2)C语言不能嵌套定义, 但可以嵌套调用函数。 8.6 函数的递归调用 递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 直接调用本函数 间接调用本函数 8.6 函数的递归调用 例8.7 例8.8 例8.9 8.7 数组作为函数参数 数组元素作函数实参 数组名作函数参数 用多维数组名作函数参数 说 明 用数组与用数组元素名作函数参数不同点: 用多维数组名作函数参数的说明 8.8 局部变量和全局变量 局部变量 在一个函数内部定义的变量是内部变量,只在本函数范围内有效。 全局变量 全局变量可以为本文件中其他函数所共 用。
文档评论(0)