- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 函数 函数与模块化程序 函数抽象的意义 函数定义 函数原型 函数调用与返回 参数的传递关系 数组作函数参数 指针型函数 指向函数的指针 递归函数 main()函数的返回值和它的参数 标识符的作用域与存储期 存储类别 链接属性 变量的初始化 8.1 函数与模块化程序 把整个程序划分为若干个功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。 模块的概念是一种程序抽象,其目的就是将某个程序分解为若干个相对独立的程序单元。 在C语言中,函数也是一种抽象,它使用一个标识符(即函数名)来代表一组连续的语句,用户也只需知道它能做什么而不必关心它是怎么做的。 如果可以把函数看成一个“黑盒子”,那么只要将数据送进去就能得到结果,而函数内部究竟是如何工作的,外部程序是不知道的。外部程序所知道的仅限于输入给函数的内容以及函数输出的内容。一个C语言程序不限制函数的个数,如果说有限制,那就是一个C语言程序至少应包含一个被命名为main的函数。 C语言的一个主要特点是可以建立库函数。系统提供了大量的预定义库函数,并提倡尽可能地使用标准库函数。 8.2 函数抽象的意义 可以一个标准库函数为例来说明函数抽象的意义。标准库函数是系统预先已定义的函数,可以通过头文件来访问。前面几章已经使用过一些库函数,如在头文件string.h中定义的strcpy(),strcat();在stdlib.h中定义的malloc(),exit()以及在math.h中定义的sqrt()等。 8.3 函数定义 在1.7节就已指出,C语言的任何一个函数,都是由函数头加函数体两部分组成。函数的定义是函数抽象的具体实现,或者说就是函数体的具体实现,也就是定义好函数的行为。函数定义的一般形式如下: [函数类型] 函数名([形式参数表]) { [函数体] } 其中,“函数类型”即返回值类型,“形式参数表”是一个用逗号分隔的形式参数(简称形参)序列,每个形参包括两个部分:形参类型和形参名。当函数被调用时这些形参接收调用参数的值。“函数体”是任何C语言合法语句的语句序列,并包括在一对花括号“{”和“}”中。 现就上述定义进一步说明如下 函数必须在返回值类型、函数名和形参类型及其个数与函数原型相匹配时定义。关于函数原型,将在8.4节讨论。 通常一个函数都有一个返回值,当一个函数没有明确指明返回值类型时,编译器将认为函数的返回值是整型(i n t)。如果函数确实不需要返回值,则应指明为void型,以告知编译器:本函数无返回值。 用于接受函数返回值的变量必须与函数具有相同的数据类型。否则,系统将按类型转换规则自动进行转换。 函数可带零个或多个形参,形参应在本函数内定义。一个函数可以没有形参,这时形参表为空表,但圆括号仍然是必需的。 在上述函数定义形式中,一对方括号表示被它括起来的内容可以“缺省”,即可以省略,也就是说,在定义函数时,可以根据需要,不给出函数类型和形式参数,甚至没有函数体。没有函数体的函数即成为如下结构所示的“最小”函数: function_name() { } 8.4 函数原型 被调用函数的定义在前,调用函数的定义在后。 调用在前,定义在后,而且又没有作特别的声明。 在调用之前,向编译器提供被调用函数应该如何调用的完整信息,即函数原型。 注意 一个函数原型是一个独立的语句。因此,函数原型应以分号结束。 建议所有的函数都应该具有函数原型,尤其是那些返回值不是整型的函数。函数原型至少应该出现在调用函数的前面,最好的办法是把函数原型集中在一个头文件中。 8.5 函数调用与返回 函数调用 return语句 8.5.1 函数调用 一个函数如果不调用它,那么这个函数就永远也不会运行。在C语言中,要调用一个函数,只能选择下列两种格式之一。 常用的调用格式是: 函数名(实参1,实参2,…) 另一种调用格式是: (*fPtr)( 实参1,实参2,…) 其中,*fPtr是用户定义的指向函数的指针,这将在后面讨论。 8.5.1 函数调用 函数语句调用:函数调用作为一个独立的语句出现。 函数表达式调用:函数调用作为表达式的运算因子。 函数参数调用:函数调用作为被调用函数的一个参数出现。 函数递归调用:最典型的递归调用是函数自己调用自己。 8.5.2 return语句 return语句有两个作用:终止函数的执行;返回一个值给调用者。它的语法为: return; 或者 return 表达式; 或者 return (表达式); 其中的“表达式”是与调用者的返回值类型相同的任意表达式。当被调用函数没有返回值时,“表达式”被省略。 一
您可能关注的文档
- C语言程序设计教程第2版张磊第3章节分支结构程序设计.ppt
- C语言程序设计教程第2版张磊第4章节循环结构程序设计.ppt
- C语言程序设计教程第2版张磊第5章节数组程序设计.ppt
- C语言程序设计教程第2版张磊第6章节函数程序设计.ppt
- C语言程序设计教程第2版张磊第8章节结构体程序设计.ppt
- C语言程序设计教程第2版张磊第9章节文件程序设计.ppt
- C语言程序设计教程第02章节.ppt
- C语言程序设计教程第03章节.ppt
- C语言程序设计教程第04章节.ppt
- C语言程序设计教程第05章节.ppt
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)