- 1、本文档共107页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章函数 第5章函数 5.1 程序的模块结构 5.2 函数的分类 5.3 函数的定义和调用 5.4 函数间的参数传递 5.5 函数的嵌套与递归 5.6 系统函数 5.7 变量的存储类别、作用域、生存期 5.1 C程序的模块结构 5.1.1 C程序的模块化结构概念 5.1.2 函数的概述 5.1.1 C程序的模块化结构概念 C语言使用函数来支持模块化程序设计。 一个C程序由一个具有固定名称main()的主函数和若干个以标识符命名的其他函数组成。 通常用main()函数描述程序的总体框架,其他函数则完成某种特定的子功能。 C函数是一种独立性很强的程序模块,所有的函数都处于平等地位,不存在从属关系,即在程序运行时,任何函数都可以调用其他函数,又可以被其他函数调用(主函数除外),甚至还可以自我调用(主函数除外)。 5.1.2 函数的概述 函数本质上是一个完成特定功能的段程序,该段程序可以被其他函数调用。 除了主函数之外,其他的函数是不能独立运行的。 ?例5.1?一个简单函数调用的例子: #includestdio.h main() { hello(); /* 调用hello函数*/ } hello() /* hello函数 */ { printf (Hello,human \n); } 5.2 函数的分类 1. 从函数定义的角度进行分类 2. 从函数形式的角度进行分类 3. 从函数的作用范围进行分类 4. 从有无返回值的角度进行分类 1.从函数定义的角度进行分类 从函数定义的角度看,函数可分为用户函数和系统函数两种。 (1)用户函数:是用户按需要编写的函数。 (2)系统函数:由C语言系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。 2.从函数形式的角度进行分类 从函数形式上来看,可以将函数分为无参函数和有参函数两种。 (1)无参函数:无参函数即在函数定义、函数说明及函数调用中均不带参数。 (2)有参函数:有参函数也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。 3.从函数的作用范围进行分类 如果从函数起作用的范围来分,又可以将函数分为外部函数和内部函数。 (1)外部函数:可以被任何编译单位调用的函数称为外部函数。 (2)内部函数:只能在本编译单位中被调用的函数称为内部函数。 4.从有无返回值的角度进行分类 从有无返回值的角度看,又可把函数分为有返回值函数和无返回值函数两种。 (1)有返回值函数:有返回值函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。 (2)无返回值函数:无返回值函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。 应该指出的是;在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。 但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。 函数还可以自己调用自己,称为递归调用。 main函数是主函数,它可以调用其他函数,而不允许被其他函数调用。 C程序的执行总是从main函数开始,完成对其他函数的调用后再返回到main函数,最后由main函数结束整个程序。 一个C源程序必须有且只能有一个主函数main。 5.3函数的定义和调用 5.3.1函数的说明 5.3.2函数的定义 5.3.3有参函数和无参函数 5.3.4函数的调用 5.3.1函数的说明 函数说明的一般形式为: 函数类型 函数名(数据类型 形式参数1, 数据类型 形式参数2,…,数据类型 形式参数n); 其中:函数类型是该函数返回值的数据类型,可以是整型、浮点型、字符型以及无值型(表示函数没有返回值)等,也可以是随后将要学习的指针型。 例如: int sql1(int m,int n,char c); /*说明一个整型函数*/ float sum(); /*说明一个浮点型函数*/ void stu(int n); /*说明一个无返回值的函数*/ 5.3.2函数的定义 1.现代格式 2.传统格式 1.现代格式 函数的类型说明 函数名(带有类型说明的参数表) { 函数体; } 2.传统格式 函数的类型说明 函数名(不带类型说明的参数表) 参数的类型说明; { 函数体; } 1)函数名 函数名是编译系统识别函数的依据,除了main()函数有固定名称外,其他函数由用户按标识符的规则自行命名。 函数名与其后的圆括号之间不能留空格,C编译系统依据一个标识符后有没有圆括号来判定它是不是函数。 和数组名一样,函数名也是一个常数,代表该段程序代码
文档评论(0)