熟练掌握函数的定义

上传人:j****9 文档编号:54352965 上传时间:2018-09-11 格式:PPT 页数:66 大小:567KB
返回 下载 相关 举报
熟练掌握函数的定义_第1页
第1页 / 共66页
熟练掌握函数的定义_第2页
第2页 / 共66页
熟练掌握函数的定义_第3页
第3页 / 共66页
熟练掌握函数的定义_第4页
第4页 / 共66页
熟练掌握函数的定义_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《熟练掌握函数的定义》由会员分享,可在线阅读,更多相关《熟练掌握函数的定义(66页珍藏版)》请在金锄头文库上搜索。

1、第六章 函 数,熟练掌握函数的定义、调用、返回值的方法及参数传递方式 掌握函数使用的常用方法 了解变量的作用域和变量的存储类别,主要内容:,6.1 问题的提出与程序示例,问题:在屏幕上显示以下内容:* * * * * * * * * * * *How do you do!* * * * * * * * * * * *,解决方法:,#include “stdio.h“ void printstar() printf(“* * * * * * * * * * * *n“); void printmessage() printf(“ How do you do! n“); ,#include “st

2、dio.h“ void main() printf(“* * * * * * * * * * * *n“);printf(“ How do you do! n“);printf(“* * * * * * * * * * * *n“); ,void main() printstar();printmessage();printstar(); ,6.2 函数基础,一、C函数的概念,将一个C程序分为若干模块,每个模块实现一个特定的功能,在C语言中用函数来实现模块的功能。,函数:具有某种功能的独立程序段。,从程序设计方法看C函数:它是实现模块化程序设计的语法元素。,从C语言中程序的组成方式看C函数:它

3、是程序的基本组成单位。,二、C函数与C程序结构,C程序由主函数(main函数)和若干个子函数构成; 主函数调用子函数; 子函数在定义时是并列的; 子函数可相互调用,也可被多次调用。,从用户使用的角度看,函数有两种 :,标准函数(库函数); 用户自己定义的函数,库函数:是由编译系统提供的已设计好的函数,用户只需调用而无需要去实现它。前几章用过的scanf,printf,getchar,putchar等都是库函数。,用户自定义函数:由程序员自己定义和设计的函数。需要程序员自己来编写函数功能实现代码。,6.3 函数的定义,6.3.1 函数定义的形式,1. 库函数的定义放在头部文件中 2. 用户自定义

4、函数。格式:函数返回值的类型说明 函数名 (形参定义表)说明部分语句,说明: 若有多个形参,形参之间用逗号分隔。每个形参都有一个类型标识符来定义其类型。 函数可以没有形参,但圆括号不能省略。,一、 无参函数的定义形式,类型标识符 函数名() 说明部分 语句,例如: print_message( ) printf(“n Hello!”); ,无参数传递,二、 有参函数的定义形式,类型标识符 函数名(形式参数表列) 说明部分 语句,有参数传递,例如: int max (int x, int y) /*求x和y二者中大者,x,y为形参*/ int z; /*函数体中变量的说明*/z=xy?x:y;r

5、eturn (z); /*将z的值作为函数返回值*/ ,三、 空函数的定义形式,类型标识符 函数名( ) ,例如:dummy() ,功能:调用后什么也不做。,用处:建立程序结构,在需要时补充功能。,四、 对形参说明的传统方式,上面讲的形式参数表的说明形式是新版C语言表示形式(现代方式),即形式参数说明是类型和参数在一起说明。传统的形式参数说明是类型和参数分别说明。,如:按传统方式说明形参int max(x , y) int x,y; ,按现代方式说明形参int max(int x ,int y) ,这两种方式都可以使用,但推荐使用现代方式。,例:编写一个函数实现求xn,现代格式: double

6、 power(double x,int n) double p;if(n0)for(p=1.0;n0;n-)p=p*x;elsep=1.0 ;return(p); ,传统格式: double power( x, n) double x; int n; double p;if(n0)for(p=1.0;n0;n-)p=p*x;elsep=1.0 return(p); ,注意: 函数定义中的函数体是用花括号括起来的语句,在函数体中,数据说明要放在执行语句的前面。 函数定义中不能包含另一个函数的定义,即函数定义不能嵌套。,例如:void print() putchar(*);void prnline

7、()putchar(n); ,6.4 函数的调用,一、函数调用的一般形式,三、函数调用的方式,1. 把函数调用作为一个语句,如:我们程序中对scanf函数和printf函数的调用。,2. 函数调用出现在表达式(函数表达式)中。,如:a =3+ max(num1,num2);,注意:无返回值函数的调用,不能出现在表达式中。,四 函数参数和函数的值,一、 形式参数和实际参数,形式参数:在定义函数时函数名后面括弧中的变量名,简称形参。,实际参数:在调用函数时函数名后面括弧中的表达式,简称实参。,main( ) int a,b,c;scanf (“%d,%d, ,int max( int x, int

8、 y) int z;z=xy? x:y;return(z); ,形参表,实参表,上例中形参与实参、函数名与返回值之间的关系:,调试运行:xingcanshican.c,调用函数的一般执行过程,首先计算实参表达式的值,分别传递给对应的形参 将控制传给被调函数,开始执行被调函数 被调用函数保存调用函数的执行现场 执行被调用函数体,遇到调用其他函数,重复执行1,调用其他函数 遇到return语句或函数体的结束括号,函数执行结束。控制返回调用函数,从调用语句的下一条语句继续执行调用函数。,abc() ,调用函数 c=abc(); ,main( ) int a,b,c;scanf (“%d,%d”, ,

9、int max( int x, int y) int z;z=xy? x:y;return(z); ,五 函数的传值调用,例:函数间的参数传递,#include “stdio.h“ void swap(int x,int y); /函数声明 void main() int i,j;i=2,j=6;printf(“调用前:i=%d,j=%dn“,i,j);swap(i,j); /函数调用printf(“调用后:i=%d,j=%dn“,i,j); void swap(int x,int y) /函数定义 int temp;printf(“交换前:x=%d,y=%dn“,x,y);temp=x;x=

10、y;y=temp;printf(“交换后:x=%d,y=%dn“,x,y); ,运行结果:,六 函数的嵌套调用,嵌套调用:在调用一个函数的过程中,又调用另一个函数。,嵌套定义:在定义一个函数时,该函数体内包含另一个函数的定义。,C语言不能嵌套定义,但可以嵌套调用。在调用一个函数的过程中,又调用另一个函数。,函数不能嵌套定义,但可嵌套调用,调用一个函数过程中又调用了另一个函数,编写程序:不断的从键盘上输入一组数据,计算并输出它们的最大公约数,#include “stdio.h“ void gcd_a_b(); int gcd(int,int); void main() int c;printf(

11、“输入数据吗?(y/n)“);c=getchar();getchar();while(c=y |c=Y)gcd_a_b();getchar();/询问用户是否继续输入数据printf(“n继续输入数据吗?(y/n)“);c=getchar();getchar(); ,void gcd_a_b() int a,b;printf(“请输入两个整数:“);scanf(“%d%d“, ,void main() gcd_a_b();,void gcd_a_b() int a,b;printf(“n gcd (%d,%d)=%d“, a,b,gcd(a,b);,int gcd(int a,int b) i

12、nt r;r=a%b;while(r!=0)a=b;b=r;r=a%b;return b; ,6.5 函数的返回值,定义:通过函数调用使主调函数得到一个确定的值,称为函数的返回值。,例如: c=max(3, 5); 此时函数的返回值是5,因此c=5,2. 函数的返回值语句 return,函数的返回值是通过 return语句 获得的。 return语句将被调函数的一个确定的值带回主调函数中去。return语句的一般形式:,“函数返回值”是有确定值的常量、变量或表达式。,说明:,一个函数中可以有多个return语句,但是一次函数执行只能执行其中的一个。当执行到某个return语句时,则终止函数执行

13、,并带回函数值。,若函数体内没有return语句,就一直将函数执行完,再返回调用函数,其返回值类型定义为void。, return后面可以无“返回值”(即 return ;),则该return语句只起到 终止函数执行,返回主调函数的作用。,参见教材:p134(ninep134.c, power.c,三、函数值的类型,函数定义时应该指定函数的类型(即函数值的类型),应该与return语句的类型一致。,说明:,(1)如果函数类型和return语句的类型不一致,以函数定义的类型为准。对数值型数据,可以自动进 行类型转换。既函数类型决定返回值的类型。,(2)如果函数不返回值,可以将函数定义为“无类型”

14、void (或称“空类型”)。,例如: void print_star(),6.6 对被调用函数的说明 (函数声明), 对被调用函数说明的前提条件,被调用函数必须是已存在的函数,如用户自定义函数或库函数。,2. 被调用函数是用户自定义函数的函数说明,同变量一样,函数的调用也应该遵循“先说明,后使用”的原则。,如果使用用户自定义函数,而且主调函数和被调用函数在同一个文件中,应该在主调函数中说明被调函数的类型。其说明格式的一般形式如下:,一般形式:,在C语言中,以上的函数说明称为函数原型。,main() float add(float x,float y); float a, b, c;scanf

15、(“ %f, %f”, ,/*定义add函数*/ float add (float x,float y) float z;z=x+y; return (z); ,对被调用函数的说明,作为表达式被调用,3. 被调用函数是库函数的函数说明,如果使用库函数,需要在文件的开头用#include 命令将需要的库函数包含到文件中。,现在我们清楚了,为什么在使用库函数之前必须包含相应的头文件?那是因为对这些库函数的原型说明全部都写在对应的头文件里了。,我们现在用到的头文件有: # include “stdio.h” /*调用输入输出函数*/ # include “math.h” /*调用数学函数*/ # include “string.h” /*调用字符,字符串函数*/,4. 函数说明和函数定义的区别,函数说明的作用是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。,旧版C语言函数说明只是对函数名极其返回类型的说明。如:float max();未进行全面检查,新版C语言兼容这种用法,但不提倡使用。,

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

当前位置:首页 > 生活休闲 > 科普知识

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