全国计算机等级考试实用应试教程二级C语言函数.ppt

上传人:豆**** 文档编号:56514860 上传时间:2022-11-02 格式:PPT 页数:26 大小:371.50KB
返回 下载 相关 举报
全国计算机等级考试实用应试教程二级C语言函数.ppt_第1页
第1页 / 共26页
全国计算机等级考试实用应试教程二级C语言函数.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《全国计算机等级考试实用应试教程二级C语言函数.ppt》由会员分享,可在线阅读,更多相关《全国计算机等级考试实用应试教程二级C语言函数.ppt(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、全国计算机等级考试实用应试教程二级C语言函数 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望7.1 库函数1函数的概念函数从本质上来说就是完成一定功能程序段,有一个名字叫函数名。若有其它程序要完成该函数的功能,可通过函数名调用它,函数可多次反复调用。引入函数主要是解决两个问题:一是为了解决代码的重复。如有一个程序段在程序中要出现很多次,每次都要写出来既非常麻烦又使程序显得很长,此时就可以把该程序段定义成一个函数,在使用该程序段的地方直接调用该函数就可以了;二是结构

2、化、模块化编程的需要。建立函数的过程称“函数的定义”,在程序中使用函数称“函数的调用”。被调用的函数称“被调函数”,而调用函数的函数称“主调函数”。在C程序中,main()可以调用任何非主函数,非主函数可以调用非主函数也可被其它函数调用但不能调用main()函数,也就是说main()只能作用主调函数。一般情况下,函数对数据进行加工,最后得到一个结果作为函数的返回值。根据不同的方法,函数可以分成不同的种类。如从使用的角度来看,可以把函数分成用户函数和系统函数;从定义时有无参数来分,可分为有参函数和无参函数;根据函数调用时是否有返回值来分,可分为有返回值的函数和无返回值的函数;根据函数的作用范围来

3、分,可分成内部函数和外部函数。2库函数C语言提供了丰富的库函数,包括常用的数学函数,字符、字符串处理函数,输入输出函数等,用户在编写程序时可以直接调用这些已有的库函数。以下是关于库函数调用的几点说明:(1)调用C语言标准库函数时要求用include命令对每一类库函数,都有其相应的头文件名,调用某个库函数时,用户在源程序中须用include命令包含其头文件名。一般形式为:#include 或#include“头文件名.h”(2)标准库函数的调用库函数调用的一般形式为:函数名(参数表)C语言中库函数的调用有两种方式:在表达式中调用。如:x=pow(2),就是在赋值表达式中调用pow函数来求x的值。

4、作为独立的语句完成某种操作。如:printf(“*&n”);就是调用了printf函数,且调用之后加了分号,构成了一条独立的语句,完成该输出操作。(3)各个库函数的功能、参数的个数和类型、函数值的类型都有其规定,用户在调用时根据需要选择合适的库函数,并严格按照该库函数的规则,正确的进行调用。重点提示重点提示:库函数的调用需要注意的是:函数的功能,函数的参数个数、类型,函数的返回值,对参数的一些特殊要求。7.2 函数的定义和返回值1函数的定义方法(1)C语言函数定义的一般形式:存储类型说明符存储类型说明符 函数返回值类型名函数返回值类型名 函数名函数名(类型名类型名 形参形参1,类型名类型名 形

5、参形参2,)*函数首部*/说明部分 执行部分 存储类型说明符说明该函数是内部函数还是外部函数。函数返回值类型名是用来说明该函数返回值的类型,如果没有返回值,则其类型说明符应为“void”。第一行通常称为函数首部,通过它就能知道函数的功能及调用方式。其它部分称函数体。函数体包括两个部分,说明部分和执行部分,说明部分通常用来定义在本函数中使用的变量、数组等,执行部分是函数功能的实现,通常由一系列的可执行语句构成。(2)无参函数的定义格式存储类型说明符 数据类型说明符 函数名()/*函数头*/说明部分 执行部分说明:无参函数与有参函数基本一样,不同的只是它没有形式参数,调用时不需实参。3)关于函数定

6、义的几点说明 C语言规定,不能在同一个函数内部再定义函数。函数名和形式参数都是由用户命名的标识符。在同一程序中,函数名必须唯一,形式参数名只要在同一函数中即可,可以与其他函数中的变量同名。若省略了函数返回值的类型名,则C默认函数返回值的类型为int类型。形参可以省略,称为无参函数。在调用时不需实参。即存储类型说明符 函数返回值类型名 函数名()函数体中,除形参外,用到的其它变量必须在说明部分进行定义,且可以和其他函数中的变量同名。2函数的返回值函数值通过return语句返回,return语句的一般形式为:return 表达式;或 return(表达式)或 return;以下是几点说明:(1)r

7、eturn语句中表达式的值就是所求的函数值,且其类型必须与函数首部所说明的类型一致。若类型不一致,则由系统自动转换为函数值的类型。(2)在程序执行到return语句时,流程就返回到调用该函数处,并带回函数值。在同一个函数内,可以在多处出现return语句。(3)return语句也可以不含表达式。此时,它只是使流程返回到调用函数,并没有确定的函数值。(4)函数体内可以没有return语句,程序就一直执行到函数末尾,然后返回调用函数,此时也没有确定的函数值带回。3函数定义举例(1)定义一个函数,其功能是对三个实型参数求最大值,并返回这个值。float max(float f1,float f2,f

8、loat f3)/*定义函数返回值的类型、函数名和形式参数*/float m1;/*函数体的说明部分*/if(f1f2)m1=f1;/*以下是函数体的执行部分*/else m1=f2;if(m1f3)m1=f3;return(m1);/*通过return(表达式)返回一个确定的值*/(2)无参函数定义示例:定义一个函数,其作用是打印出五行欢迎词“Welcome you,my dear friends”。void welc()/*定义函数返回值的类型(为“void”说明无返回值)及函数名*/int i;/*函数体的说明部分*/for(i=1;i=5;i+)/*以下是函数体的执行部分*/print

9、f(“Welcome,my dear friends”);说明:该函数的类型说明为“void”,所以为无返回值的函数,函数中不需要return语句。重点提示重点提示:要想让函数返回一个确定的值,必须通过语句“return(表达式)”来实现,其中表达式就是函数的返回值。如果没有return语句,或return语句不带表达式并不表示没有返回值,而是表示返回一个不确定的值。如果不希望有返回值,必须在定义函数时把“数据类型说明符”说明为“void”。7.3 函数的调用7.3.1 函数调用的两种形式1有返回值的函数的调用形式有返回值的函数调用,可以作为表达式或表达式的一部分,也可以作为一条语句。其调用形

10、式是:函数名(实际参数列表)调用的结果是获得一个返回值,该返回值可以参加相应类型的计算。如:sum(x,y)是一函数,可以由以下两种调用方式y2sum(3,4);(作为表达式的一部分,参与计算)或sum(3,4);(单独作为一条语句,不使用返回值),2无返回值的函数调用形式无返回值的函数调用只能作为一条语句,其调用形式如下:函数名(实际参数列表);(注意,这里的分号必不可少)如:max(a,b,c);3函数调用执行过程其实在执行函数调用时,系统要完成一系列复杂的过程:首先为被调函数的所有形式参数分配内存,再计算实际参数的值,再一一对应地赋给相应的形式参数(对于无参函数,不做该项工作);然后进入

11、函数体,为函数说明部分定义的变量分配存储空间,再依次执行函数体中的可执行语句;当执行到“return(表达式)”语句时,计算返回值(如果是无返回值的函数,不做该项工作),收回本函数中定义的变量所占用的存储空间(对于对于static类型的变量,类型的变量,其空间不收回其空间不收回),返回主调函数继续执行。重点提示重点提示:有返回值的函数调用,可以作为表达式或表有返回值的函数调用,可以作为表达式或表达式的一部分,也可以作为一条语句。而无返回值的函数达式的一部分,也可以作为一条语句。而无返回值的函数调用只能作为一条语句。调用只能作为一条语句。7.3.2 函数调用时的语法要求函数调用时,需要遵循以下几

12、条语法要求:(1)调用函数时,函数名必须与所调用的函数名字完全一致。(2)实参的个数必须与形参一致。实参可以是表达式,在类型上应按位置与形参一一对应匹配。如果类型不匹配,C编译程序按赋值兼容的规则进行转换,否则,程序运行后不能得到正确的结果。(3)C语言规定,函数必须先定义后调用(函数的返回值类型为int或char时除外)。(4)实参可以是 C程序中函数可以直接或间接的自己调用自己,即递归调用。重点提示:重点提示:函数调用时,必须特别注意实参和形参的类型匹配。7.4 函数说明7.4.1 函数说明的形式在C语言中,要调用某个函数,需对该函数进行函数说明(或称为函数原型说明)。函数说明的一般形式为

13、:类型名 函数名(参数类型1,参数类型2,)或类型名 函数名(参数类型1 参数名1,参数类型2 参数名2,)以下是函数说明的几条规则:(1)调用系统函数时,需要在程序的开头包含相应的头文件。但scanf()和printf()等少数的几个函数不需要。(2)当被调函数定义在主调函数之前时,对被调函数的说明可以省去,也可以不省。(3)当被调函数的返回值类型是整形或字符型时,不管其定义在主调函数之前还是之后,对被调函数的说明都可以省去,也可以不省。(4)其它情况一律需要对被调函数进行说明。(5)当被调函数和主调函数在同一个程序文件中,可在主调函数的函数体说明部分对被调函数进行说明,说明格式有两种,如下

14、:类型名 被调函数名()或 类型名 被调函数名(形式参数列表)(6)函数说明可以是一条独立的语句,也可以与普通变量一起出现在同一个定义语句中。如double sub(float,double)和double x,y,sub(float,double)都是合法的。重点提示重点提示:内部函数的说明包含在.h文件中,故调用某个内部函数,必须包含相应的头文件。7.4.2 函数说明的位置当在函数的外部、被调用之前说明函数时,在函数说明的后面所有位置上都可以对该函数进行调用。函数说明也可以放在调用函数内的说明部分,如在main函数内部进行说明,则只能在main函数内部才能识别函数。重点提示:重点提示:函数

15、调用时,必须特别注意实参和形参的类型匹配。7.5 调用函数和被调用函数之间的数据传递1形参和实参的概念每个函数一般都能完成一定的功能,可以形象地把函数看成一个加工厂,该加工厂对材料进行加工,最后生产出产品。而加工厂加工的材料,称为“函数的参数”,而加工出来的产品称为“函数的返回值”(有的函数没有返回值)。在定义函数时,只是形式化地说明函数加工的对象,这种对象并不实际存在,就象建立一个本材加工厂时只是说明该加工厂把木材加工成木板,但并没有实际的木材,把这种参数称为“形式参数”。当程序段要调用该函数完成指定的功能,就需要给它实际的材料,以便加工出“产品”。就象一个人要把木材加工成木板,就必须把实际

16、的木材送到加工厂加工一样,函数调用时传入的参数称为“实际参数”。2数据传递的形式(1)C语言中,调用函数和被调函数之间的数据可以通过三种方式进行传递:实际参数和形式参数之间进行数据传递。通过return语句把函数值返回调用函数。通过全局变量。(2)参数值的传递主调函数在调用函数时,需要把相应的实际参数传给相应的形式参数,实际参数的个数和类型要和形式参数的个数和类型一致。实参的个数与类型应与形参一致,否则将会出现编译错误。实参可以是常量、变量、数组元素和表达式,但如果在被调函数中有取形参地址或给形参赋值的语句,则对应的实参必须是变量和数组元素。定义函数时定义的形参并不占用实际的存储单元,只有在被

17、调用时才由系统给它分配存储单元,在调用结束后,形参所占用的存储单元被回收。C语言规定,函数间的参数传递是“值传参”,即单向传递,实参可以把值传给形参,但形参的值不能传给实参,也就是说对形参的修改是不会影响到对应的实参。此处要注意一个“假象”,数组名作为参数传递的是数组的首地址,严格地说其传递的也是“值(地址)”。后面所说的指针变量作为参数也是如样,传的也是值(地址值)。3程序举例调用max()函数得到从键盘输入的三个值的最大值。main()float a,b,c,k;scanf(“%f,%f,%f”,&a,&b,&c);k=max(a,b,c);/*函数调用*/printf(“max=%f”,k);重点提示重点提示:主调函数在调用函数时,需要把相应的实际参数传给相应的形式参数,实际参数的个数和类型要和形式参数的个数和类型必须一致。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com