库函数、函数的定义与返回值课件

上传人:woxinch****an2018 文档编号:56919368 上传时间:2018-10-17 格式:PPT 页数:61 大小:753.50KB
返回 下载 相关 举报
库函数、函数的定义与返回值课件_第1页
第1页 / 共61页
库函数、函数的定义与返回值课件_第2页
第2页 / 共61页
库函数、函数的定义与返回值课件_第3页
第3页 / 共61页
库函数、函数的定义与返回值课件_第4页
第4页 / 共61页
库函数、函数的定义与返回值课件_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《库函数、函数的定义与返回值课件》由会员分享,可在线阅读,更多相关《库函数、函数的定义与返回值课件(61页珍藏版)》请在金锄头文库上搜索。

1、第七章 函数,库函数、函数的定义与返回值 函数的调用、函数的说明调用函数和被调用函数间的数据传递 函数的递归调用、程序举例,第七章 函数,在解决一个比较复杂的实际问题时,不可能把所有要完成的任务全都写在main函数中。这时,程序往往由一个main函数和若干个其它函数组成,每个函数各自完成相对独立的部分功能。,在前面的章节中,我们编写的程序都是由一个main函数来组成,在main函数中调用过scanf、printf等系统函数。,模块化的程序设计方法,函数间相互调用的示意,main() f1() f11() f1(); f11(); f12()f2(); f12(); f2() f21() f21

2、(); ,函数的分类,从函数形式 无参函数 有参函数 ?我们学习过哪些无参函数和有参函数?,从用户角度 标准函数(库函数):由系统提供 用户自定义函数,库函数由系统提供,用户只要按照要求的格式正确调用即可。不同的C编译系统提供的库函数有些不同。,7.1 库函数,使用库函数应注意的问题:1、调用库函数时要用include命令将相关的头文件包含进来。如:调用数学函数,用include “math.h“ |调用输入输出函数,用include “stdio.h“ | 调用字符函数,用include “ ctype.h“ | 2、库函数调用的一般形式:函数名(参数表)要注意函数的功能、参数的个数与类型、

3、函数值的类型。如:求平方根的函数sqrt的形式是:double sqrt (double x),3、库函数调用以两种方式出现。 其一:出现在表达式中,即作为表达式的一部分参与运算。如:计算y=x2.5+1.3,则通过以下语句调用来实现。y=pow(x,2.5)+1.3; 其二:独立的语句,即调用函数后加一分号。如:printf(“*n“); 4、调用库函数时,要注意参数的一些特殊要求。如三角函数要求自变量参数用弧度表示,开平方函数要求自变量参数的值大于或等于0。,使用库函数应注意的问题(续),函数返回值的类型 缺省int型 无返回值: void,函数体,函数类型 函数名(形参类型说明表)说明部

4、分执行部分,7.2 函数的定义和返回值,1. 函数定义的一般格式,现代风格:,多个形参说明之间要用逗号隔开,没有形参时,这一对括号不能省略,合法标识符,如果函数的类型不是void,函数体最后要用return语句去返回一个值,例1 有参函数(现代风格)int max(int x,int y) int z;z = xy?x:y;return(z);,例3 无参函数void printstar( ) printf(“*n“); 或void printstar(void ) printf(“*n“); ,函数的定义示例,例4 空函数void dummy(void) ,函数体为空 (留待以后补充),in

5、t max2(int x , int y) /*现代风格*/int max;if(xy) max = x;else max = y;printf(“max(max2)=%dn“,max);return(max); void main() int a,b,max;scanf(“%d,%d“, ,例 函数的定义,形参和函数体中定义的变量只在函数被调用时才临时分配存储单元,当退出函数时,这些存储单元全部被释放(称为局部性,因而与其它函数中的变量同名不会引起混淆)。,main()时,main函数是什么类型的?,可改写为max=xy?x:y;,形参,实参,函数与函数之间是平等的,void main()

6、int max2(int x , int y) int z;if(xy) z=x;else z=y;return(z);int a,b,max;scanf(“%d,%d“, ,函数的定义是平行的,不能在一个函数的内部再定义其它函数。即每个函数都是一个相对独立的模块,不能在写某一个函数时又包含了另一个函数的定义(main函数的执行时有一点点小的特权!)。,返回语句 形式return(表达式);或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可以有多个return语句,但只有其中的一个return语句能够得到执行

7、若函数中没有return语句,或者是一个不带表达式的return语句,则该函数结束时自动返回调用函数一个不确定的值 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换 void型函数:明确说明函数没有返回值,2. 函数的返回值,int max(float x, float y) float z;z=xy?x:y;return(z); main() float a,b;scanf(“%f,%f“, ,例 函数返回值类型转换,main() int a,b,max;scanf(“%d,%d“, ,例 函数可以有多个return语句,注意:在C语言中,函数名不能被赋

8、值,只能通过return语句返回一个值。,int max2(int x,int y)max2= xy?x:y ;,printstar() printf(“*n“); main() int a;a = printstar();printf(“a=%dn“,a); ,输出:a=10,例 函数带回不确定值,printstar()是什么类型?,void型函数:明确说明函数没有返回值,#include /*void*/ printstar() printf(“*#*n“); main() int a;a=printstar();a=printstar();printf(“a=%dn“,a); ,void

9、 printstar() printf(“*n“); main() int a;a = printstar();printf(“a=%d“,a); ,编译错误!,(VC+)error C2120: void illegal with all types,说明: (1) 调用函数时,其名字必须与定义的名字相同。 (2) 函数调用时的实参只写名字不需要在名字前再带实参类型。 如上面main函数中对max2函数的调用不能写成: max = max2(int a,int b);, 7.3 函数的调用 1. 函数调用的一般形式: 函数名(实参表);,说明:(3) 实参与形参,个数应一致。若实参少,则必有

10、形参未得到值(不确定值),影响结果。若实参多,则多余的无效(TC)。如:c=max2(3); 则c的值为:761(随机值)若:c=max2(3,5,8); 则c的值为: 5(4) 实参与形参的类型应一一对应相匹配。若不匹配,程序仍能运行,但得不出正确结果(TC)。如:c=max(3.0,5.0); 则c的值为: 0若:c=max(3L,5L); 则c的值为: 3,函数调用说明(续),(5) 函数必须先定义,后调用。 将要被调用的函数定义在前,调用在后。返回值类型为int或char的函数可例外。(6) 函数可直接或间接地自己调用自己(递归调用,在7.6节介绍),函数调用说明(续),(7) 实参表

11、求值顺序,因系统而定(Turbo C 自右向左),#include “stdio.h“ void main() int p=2; printf(“%d,%d,%dn“,p,+p,p); /*TC: 3,3,2 VC: 3,3,2*/,#include “stdio.h“ void main() int p=2; printf(“%d,%d,%dn“,p,p+,p); /*TC: 3,2,2 VC: 2,2,2*/,2. 函数调用的方式,1. 函数表达式: 例 m=max(a,b)*2;2. 函数语句: 例 printstar();printf(“Hello,World!n “); 3. 函数参

12、数: 例 printf(“%d “,max(a,b);m=max(a,max(b,c);, 7.4 函数的说明,在C语言中,除了主函数外,对于用户定义的函数要遵循“先定义,后使用”的规则。凡是未在调用之前定义的函数,C编译程序默认函数的返回值为int类型。对于返回值为其它类型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进行说明(或称为函数原型说明)。,C语言对被调用函数要求: 必须是已存在的函数 库函数: #include 用户自定义函数: 函数类型说明,1. 函数说明一般形式,函数说明语句 作用:告诉编译系统max2函数是float类型的、有2个float类型的参数。,可选,在VC中不允许,说明,(1)函数说明可以是一个独立的语句;如上面例子中就是采用独立语句的形式。(2)函数说明中的形参名是一种虚设,它们可以是任意的用户标识符,既不必与函数首部中的形参名一致,又可以与程序中的任意用户标识符同名。因此,参数名也可以省略。 如上面的例子中函数说明可写成: float max2(float,float);,(3)注意函数定义与函数说明是不同的,定义是写出函数的完整形式,而说明是告诉系统此函数的返回值类型、参数的个数与类型,便于编译时进行有效的类型检查。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号