第7章函数 7.1数概述 72函数的定义 7.3函数的声明和调用 7.4参数的传递 7.5嵌套调用和递归调用 7.6指针与函数 77数组作为函数参数s 7.8变量的作用域和存储类别 7.9外部函数和内部函数 7.10命令行参数 7.11实例演示:“极限俱乐部会员信息系统”程 序
第7章 函数 7.1 函数概述 7.2 函数的定义 7.3 函数的声明和调用 7.4 参数的传递 7.5 嵌套调用和递归调用 7.6 指针与函数 7.7 数组作为函数参数 7.8 变量的作用域和存储类别 7.9 外部函数和内部函数 7.10 命令行参数 7.11 实例演示:“极限俱乐部会员信息系统”程 序
7.1概述 令为了使程序大而不繁,简洁明了,程序设计者要根据软 件的总体要求,把相同功能或相似功能的操作归纳成模 块的形式,并设计成函数,以实现程序设计的模块化 所以函数是C程序的重要成分,它封装了完成某一特定 功能的程序代码和数据,实现较高级的抽象。除函数的 具体设计者外,其他人员只要运用已经设计好的函数, 知道函数原型,懂得如何调用,即知道函数的对外接口 无须知道函数内部的县体实现细节,这有利于提高程序 的开发效率,同时增强程序的可靠性
❖ 7.1概述 ❖ 为了使程序大而不繁,简洁明了,程序设计者要根据软 件的总体要求,把相同功能或相似功能的操作归纳成模 块的形式,并设计成函数,以实现程序设计的模块化。 所以函数是C程序的重要成分,它封装了完成某一特定 功能的程序代码和数据,实现较高级的抽象。除函数的 具体设计者外,其他人员只要运用已经设计好的函数, 知道函数原型,懂得如何调用,即知道函数的对外接口, 无须知道函数内部的具体实现细节,这有利于提高程序 的开发效率,同时增强程序的可靠性
7.1函数概述 冷C语言不仅提供了极为丰富的库函数(如 Turbo c,MS C都提供了三百多个库函数),还允许用户建立自己定义 的函数。在功能上,由主函数调用其他函数,其他函数 也可以互相调用, 网数A(形式参数表) 函数B(形式参数表 调用函数A; 调用函数B 返回主调函数A() 返回主调函数main(
7.1函数概述 ❖ C语言不仅提供了极为丰富的库函数(如Turbo C,MS C都提供了三百多个库函数),还允许用户建立自己定义 的函数。在功能上,由主函数调用其他函数,其他函数 也可以互相调用
C语言的函数作为一个模块应具备下面两个原则: ☆界面清晰。函数的处理子任务明确,函数之间数据传递 越少越好。 大小适中。若函数太大,处理任务复杂,导致结构复杂, 程序可读性较差;反之,若函数太小,则程序调用关系 复杂,这样会降低程序的效率
C语言的函数作为一个模块应具备下面两个原则: ❖ 界面清晰。函数的处理子任务明确,函数之间数据传递 越少越好。 ❖ 大小适中。若函数太大,处理任务复杂,导致结构复杂, 程序可读性较差;反之,若函数太小,则程序调用关系 复杂,这样会降低程序的效率
函数分类 令在C语言中,函数可分为两类,一类是由系统定义的标 准函数,又称为库函数,其函数声明一般是在系统的 include目录下以h为后缀的买文件中,如在程序中要用 到某个库函数,必须在调用该函数之前用# nclude命令将库函数信息包含到本程序中 令另一类函数是自定义函数,这类函数是根据问题的特殊 要求而设计的,自定义的函数为构架复杂的大程序提供 方便,同时对程序的维护和扩充 便利 对子百定义函数,在程序中可表现 势苯两种影 令第一种:函数声明、函数调用、函数定义。 令第二种:函数定义、函数调用
函数分类 ❖ 在C语言中,函数可分为两类,一类是由系统定义的标 准函数,又称为库函数,其函数声明一般是在系统的 include目录下以.h为后缀的头文件中,如在程序中要用 到某个库函数,必须在调用该函数之前用#include命令将库函数信息包含到本程序中。 ❖ 另一类函数是自定义函数,这类函数是根据问题的特殊 要求而设计的,自定义的函数为构架复杂的大程序提供 了方便,同时对程序的维护和扩充也带来了一些便利。 对于自定义函数,在程序中可表现为以下两种形式。 ❖ 第一种:函数声明、函数调用、函数定义。 ❖ 第二种:函数定义、函数调用
函数调用 一个C程序由主函数和若干个或0个用户函数组成。C语 言中的函数没有隶属关系,即所有的函数都是独立定义 的,不能嵌套定义,函数是通过调用来执行的,允许函 数间互相调用,也允许直接或间接的递归调用其自身 man函数是主函数,它可以调用其它函数,而不允许 被其它函数调用 令调用另一个函数的函数称为主调函数,被调用的函数称 为被调函数 个函数调用另一个函数时是将流程控制 转到被调函数,被调函数执行完后返回主调函数的调用 处继续主调函数的执
函数调用 ❖ 一个C程序由主函数和若干个或0个用户函数组成。C语 言中的函数没有隶属关系,即所有的函数都是独立定义 的,不能嵌套定义,函数是通过调用来执行的,允许函 数间互相调用,也允许直接或间接的递归调用其自身。 ❖ main 函数是主函数,它可以调用其它函数,而不允许 被其它函数调用。 ❖ 调用另一个函数的函数称为主调函数,被调用的函数称 为被调函数。一个函数调用另一个函数时是将流程控制 转到被调函数,被调函数执行完后返回主调函数的调用 处继续主调函数的执行
72函数的定义 令调用函数必须遵循“定义在先、使用在后”的原则。函 数定义的一般格式 冷类型说明函数名(类型说明符形参变量1,类型说明符 形参变量2,…) 令语句部分
7.2 函数的定义 ❖ 调用函数必须遵循“定义在先、使用在后”的原则。函 数定义的一般格式: ❖ 类型说明 函数名(类型说明符 形参变量1,类型说明符 形参变量2,…) ❖ { ❖ 语句部分 ❖ }
1.函数头 包括函数名、函数的类型及形式参数表。 (1)函数名 冷用标识符表示,用来标识一个函数的名字,函数名后面必须有 对圆括号。除main函数外,其他函数可以按标识符规则任意 命名,穆序风格要求函数命名是能反映函数功能、有助于记忆 (2)函数类型 冷函数名前的函数类型是指函数返回值的类型。如为整型int可省 略不写:如无返回值,以voi类型明示。如果函数为无参函数 函数类型说明为void型(空值类型),否则,可能导致程序出错。 (3)形式参数表 圆括号内为形式参数表列部分,其中的参数称为形式参数,它 包括函数的自变量部分。每个参数前都应用相应的类型标识符 明,有多个参数时用逗号分开。如果是无参数函 数,形式参数表列部分为空,但一对0不能省略
1.函数头 ❖ 包括函数名、函数的类型及形式参数表。 (1)函数名 ❖ 用标识符表示,用来标识一个函数的名字,函数名后面必须有 一对圆括号。除main函数外,其他函数可以按标识符规则任意 命名,程序风格要求函数命名是能反映函数功能、有助于记忆 的标识符。 (2)函数类型 ❖ 函数名前的函数类型是指函数返回值的类型。如为整型int可省 略不写;如无返回值,以void类型明示。如果函数为无参函数, 而且在调用后没有返回值。在这种情况下,C语言规定应当将 函数类型说明为void型(空值类型),否则,可能导致程序出错。 (3)形式参数表 ❖ 圆括号内为形式参数表列部分,其中的参数称为形式参数,它 包括函数的自变量部分。每个参数前都应用相应的类型标识符 对参数进行说明,有多个参数时用逗号分开。如果是无参数函 数,形式参数表列部分为空,但一对()不能省略
2.函数体 令函数体是函数头下面最外层一对花括号内的代码,它是 由一系列语包构成的,用以实现函数的功能,函数体内 可以有函数说明、变量说明以及可执行语句。 函数体也可以是一对空的花括号,例如: void dummy(void 冷这是一个“空函数”,调用它并不产生任何有效的操作 但却是一个符合C语言语法的合法函数。在程序开发过 程中,通常先开发主要函数,二些次要的函数或有待以 星亮酸信流腾数驾写盛要教猫门 句或执行完函数体所有语句,流程就回到主调函数
2.函数体 ❖ 函数体是函数头下面最外层一对花括号内的代码,它是 由一系列语句构成的,用以实现函数的功能,函数体内 可以有函数说明、变量说明以及可执行语句。 ❖ 函数体也可以是一对空的花括号,例如: void dummy(void) { } ❖ 这是一个“空函数”,调用它并不产生任何有效的操作, 但却是一个符合C语言语法的合法函数。在程序开发过 程中,通常先开发主要函数,一些次要的函数或有待以 后扩充和完善功能的函数暂时写成空函数,使程序可以 在不完整情况下调试部分功能。当函数执行到return语 句或执行完函数体所有语句,流程就回到主调函数
关于 return语句说明如下 return语句是函数的逻辑结尾,不一定是函数的最后 条语句,一个函数中允许出现多个 return语句,但每次 能有一个 return语句被执行 令如果不需要从被调函数带回返回值可以不要 -return语句 一般情况是将函数类型定义为void型,也叫空类型,此 种类型的函数一般用来完成某种操作例如输出程序运行 结果等。 令还可以用不带表达式的 reture作为函数和逻辑结尾,这 时, reture的作用是将控制权交给调用函数,而不是返 回一个值
关于return语句说明如下: ❖ return语句是函数的逻辑结尾,不一定是函数的最后一 条语句,一个函数中允许出现多个return语句,但每次 只能有一个return语句被执行。 ❖ 如果不需要从被调函数带回返回值可以不要return语句。 一般情况是将函数类型定义为void型,也叫空类型,此 种类型的函数一般用来完成某种操作例如输出程序运行 结果等。 ❖ 还可以用不带表达式的reture作为函数和逻辑结尾,这 时,reture的作用是将控制权交给调用函数,而不是返 回一个值