当前位置:文档之家› C语言程序设计第七章

C语言程序设计第七章


7.3 函数的参数和函数的值
7.3.1 形式参数和实际参数
在调用函数时,大多数情况下,主调函数和被调函数之间有数 据传递关系。这就是前面提到的有参函数。在定义函数时,函数名 后面的括号中的变量称为“形式参数”,简称“形参”。在调用函 数时,主调函数名后面括号中的参数(可以是一个表达式)称为 “实际参数”,简称“实参”。 关于形参和实参的说明: (1)在定义函数时,必须指定形参的类型,形参的类型应和实 参的类型一致。 (2)实参可以是常量、变量、表达式、函数等。无论实参是何 种类型的量,在进行函数调用时,它们都必须具有确定的值,以便 把这些值传送给形参(如果形参是数组名,则传递的是数组首地 址)。
【例7.1】简单的函数调用。 main( ) { p1( ); P2( ); P1( ); } P1( ) {
7.1 概述
printf(“* * * * * * * *\n”); } P2( ) { printf(“ Welcome to C!\n”); } 运行结果: ******** Welcome to C! ******** P1和p2 都是用户定义的函数名,分别用来输出一行“*”号 和一行信息。
7.2 函数的定义
②有参函数。调用该类函数时,在主调函数和被调函数之间有 数据传递。主调函数可以将数据传递给被调函数使用,被调函数的 计算结果也可以带回主调函数使用。
7.2.2 函数定义的一般形式
1.无参函数定义的一般形式 类型 函数名() { 说明部分; 语句 } 【例7.1】中的p1和p2函数都是无参函数。 2.有参函数定义的一般形式 类型 函数名(形式参数表列) 形式参数说明;
7.2 函数的定义
(2)函数名,命名规则与变量名相同,应是一个合法的标识符。 (3)形参表列,是写在圆括号中的一组变量名,如果“形参列表” 中有多个形式参数,则它们之间要用“,”分开。现常用的形式为把 形参类型说明放在形参表列中直接定义,如: int max(int x,int y) 相当于:int max(x,y) int x,y; (4)函数体,用花括号{ }括起的部分,函数体是由说明部分和语 句部分组成。 3. 定义空函数 在程序设计中有时会用到空函数,它的形式为: 类型 函数名(){ } 如:void dump( ) {;} 调用此函数时,不做任何操作,没有实际作用。但是可以表明这 里要调用一个函数,等以后扩充函数功能时补充上。
7.2 函数的定义
7.2.1 C语言函数的概念及分类 1.C语言函数的概念 “函数”是从英文function翻译过来的,function的意思既是 “函数”,也是“功能”。从本质上来说,函数就是用来完成一定 的功能。这样,对函数的概念就很好理解了,所谓函数名就是给该 功能起一个名字。如果该功能是用来实现数学运算的,就是数学函 数。在C语言中,往往把程序需要实现的一些功能分别编写为若干 个函数,然后把它们有机组合成一个完整的程序。
7.2 函数的定义
{ 说明部分; 语句 } 或: 类型 函数名(类型1 形参1,类型2 形参2,……,类型n 形参n) { 说明部分; 语句 } 说明: (1)函数类型,它表示返回的函数值类型。在C语言中还可以定 义无类型(即void类型)的函数,这种函数不返回函数值,只是完 成某种功能。函数类型标识符可以省略,如果省略了类型标识符, 则默认为是int型。
第7章
函数与指针
本章要点 ■ 函数的定义和调用 ■ 函数参数的传递 ■ 指针与函数的应用
7.1 概述
C语言是通过函数来实现模块化程序设计的。所以较大的C语言应 用程序往往是由多个函数组成的,每个函数分别对应各自的功能模块。 7.1.1 模块化程序结构的概念 模块化程序设计是把一个大的程序按功能进行分解,由于分解后 的各模块较小,因此容易实现,也容易调试。 1.按功能划分模块 划分模块的基本原则是:各模块都要易于理解,功能尽量单一,模块 间的联系尽量少。满足这些要求的模块具有以下优点: (1)模块间的接口关系简单,这种程序可读性和可理解性较强。 (2)需要修改某一功能时,只涉及到一个模块,不会影响到其他 模块。 (3)脱离程序的上、下文也能单独验证一个模块的正确性。 (4)扩充或建立新系统时,可充分利用已有的模块。
7.1 概述
说明: (1)一个源文件由一个或多个函数组成。一个源程序文件 是一个编译单位。
(2)C程序的执行从main函数开始,调用其它函数后,返
回到main函数,在main函数中结束整个程序的运行。main函数 又称主函数。 (3)所有的函数都是平行的,互相独立的。一个函数并不 从属于另一函数,即函数不能嵌套定函数的定义
2.C语言函数的分类 (1)从用户使用的角度来分类: ①库函数。它是由编译系统提供的,用户不必定义可以直接使 用的函数。 ②用户自己定义的函数。是用户自己设计的,用来实现用户指 定的功能。 (2)从函数完成的任务来分类: ①有返回值函数。该类函数在结束时,将计算结果返回到主调 函数。 ②无返回值函数。该类函数运行结束时,没有数据返回到主调 函数,它只是完成某一种操作。 (3)从函数的表示形式来分类: ①无参函数。主调函数没有将数据传递给被调函数,一般用来 完成某一操作。无参函数可以带回或不带回函数值到主调函数。
主模块4
主模块5
图 7.1 按层次调用模块
主模块6
7.1 概述
7.1.2 C语言程序的构成 在C语言中,每个模块的功能是由函数来实现的。一个C语言程 序由一个或多个函数组成,其中必须有且只有一个名为main的主函 数。主函数调用其它函数,其它函数可以互相调用。同一个函数可 以被一个或多个函数调用。
7.1 概述
2、按层次组织模块 结构化程序设计方法要求在设计程序时,按层次结构组织各 模块。在按层次组织模块时,上层模块只需指出“做什么”,最底 层的模块才精确地描述“怎么做”。例如,图7.1所示的层次结构 中,主模块指出总任务;模块1、模块2、模块3分别指出各自的子 任务;模块4、模块5、模块6才去精确描述“怎么做”。 主模块 主模块1 主模块2 主模块3
相关主题