C语言课件第六章函数.ppt
《C语言课件第六章函数.ppt》由会员分享,可在线阅读,更多相关《C语言课件第六章函数.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、合肥工业大学Xuan shanli第六章第六章 函函 数数第六章第六章 函函 数数结构化程序设计基础结构化程序设计基础合肥工业大学Xuan shanli第六章第六章 函函 数数结构化程序设计概述 结构化程序设计要求一种自顶向下的设计方法,也就是将复杂结构化程序设计要求一种自顶向下的设计方法,也就是将复杂的系统划分为相对独立的,功能较为单一功能的子系统的组合。的系统划分为相对独立的,功能较为单一功能的子系统的组合。每个子系统称为模块,在每个子系统称为模块,在C语言中表现为函数。语言中表现为函数。复杂问题main()abca1a2b1b2c1c2各模块之间的关系称之为接口。各模块之间的关系称之为接
2、口。优点:优点:函数实现的功能单一函数实现的功能单一完整,可以独立设计,单完整,可以独立设计,单独调试。易于维护,通用独调试。易于维护,通用性强。性强。合肥工业大学Xuan shanli第六章第六章 函函 数数6.1函数的定义和调用函数的定义和调用函数的基本结构函数的基本结构#includevoidmain(void)inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“%d”c);intmax(intx,inty)intz;z=x=y?x:y;return(z);主主函函数数函函数数体体函数的类型,返回值的类型。函数的类型,返回值的类型。函数名(用
3、标识符命名),函数名(用标识符命名),引用函数的标志,并得到结果。引用函数的标志,并得到结果。函数参数说明表。函数参数说明表。定义!定义!引用!引用!函数定义是要确定函数的函数定义是要确定函数的名称、函数的类型、函数的参名称、函数的类型、函数的参数及函数的功能。数及函数的功能。合肥工业大学Xuan shanli第六章第六章 函函 数数函数的定义函数的定义格式:格式:type函数名函数名(参数说明表参数说明表)内部说明语句内部说明语句;功能语句功能语句;如果函数有返回值,应含如果函数有返回值,应含有有return语句。语句。intmax(intx,inty)intz;z=x=y?x:y;retu
4、rn(z);说明:说明:函数不能嵌套定义,但可以嵌套引用,包括引用自己。函数不能嵌套定义,但可以嵌套引用,包括引用自己。intmax(intx,inty)intcx(intc,intd)/*Error!*/函数如果无返回值,函数如果无返回值,type应说明为空类型应说明为空类型void。函数无参。函数无参数应定义成数应定义成void。void Bell(void)printf(“007”);合肥工业大学Xuan shanli第六章第六章 函函 数数函数的调用函数的调用调用方式:调用方式:函数名函数名(实参表实参表)一般调用方式有三种:一般调用方式有三种:v语语句句形形式:式:max(a,b);
5、v表达式形式:表达式形式:c=max(a,b)*2;v函函数数参参数:数:c=max(a,max(b,d);合肥工业大学Xuan shanli第六章第六章 函函 数数调用过程调用过程voidmain(void)inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“%5d”,c);intmax(intx,inty)intz;z=xy?x:y;return(z);先计算实参的值,从右向左向函数传递调赋值给形参。先计算实参的值,从右向左向函数传递调赋值给形参。23abXy23转移在函数中运行,执行到一个转移在函数中运行,执行到一个return语句,将返回表
6、达式语句,将返回表达式的值。由函数名带回给调用函数。的值。由函数名带回给调用函数。z3函数如果没有函数如果没有return语句,由最后一个语句,由最后一个返回一个不确定的值!返回一个不确定的值!合肥工业大学Xuan shanli第六章第六章 函函 数数关于返回值的几点说明:关于返回值的几点说明:函数可以通过一个函数可以通过一个return语句返回一个值,也可以不返回值,语句返回一个值,也可以不返回值,此时应在定义函数时用此时应在定义函数时用void类型加以说明。类型加以说明。函数中可以出现多个函数中可以出现多个return语句,遇到一个语句,遇到一个return语句,则语句,则返回值,且返回调
7、用函数,继续执行。返回值,且返回调用函数,继续执行。intmax(intx,inty)if(x=y)returnx;returny;返回值的类型应与函数的类型一致,如不一致,以函数类型返回值的类型应与函数的类型一致,如不一致,以函数类型为准,为准,先转换为函数类型后,先转换为函数类型后,再返回。再返回。intmax(void)floatz;returnz;/*z先转化为整型先转化为整型*/为了确保参数和返回值类型正确,一般须在函数调用前对其为了确保参数和返回值类型正确,一般须在函数调用前对其类型和参数的类型加以说明,该说明称之为类型和参数的类型加以说明,该说明称之为原型声明原型声明。intim
8、ax(int,int);voidmain(void)intx,y,z;z=imax(x,y);原型声明语句,加;原型声明语句,加;合肥工业大学Xuan shanli第六章第六章 函函 数数举例:通过函数求举例:通过函数求xn。#includedoublepow(float,int);voidmain(void)inti;for(i=1;i=9;i+)printf(“%d,%fn”,i,pow(2.5,i);doublepow(floatx,intn)inti;doublep=1;for(i=1;i=n;i+)p=p*x;return(p);原型声明。原型声明。定定义义函函数数调用函数。调用函数
9、。chp6ex1合肥工业大学Xuan shanli第六章第六章 函函 数数6.2变量的存储类型及作用域变量的存储类型及作用域变量是内存数据的抽象,即将内存地址、数据表示变量是内存数据的抽象,即将内存地址、数据表示抽象成一个抽象成一个符号。符号。此外,变量还有此外,变量还有存储类型存储类型,存储类型确定了变量在,存储类型确定了变量在时间上的时间上的生存期和空间上的作用域。生存期和空间上的作用域。变量的存储类型有以下四种:变量的存储类型有以下四种:自动类型自动类型auto寄存器类型寄存器类型register静态类型静态类型static外部类型外部类型extern变量的说明格式:变量的说明格式:存储
10、类型存储类型 类型类型 变量名表;变量名表;确定变量在内存中的表示方法。确定变量在内存中的表示方法。确定变量的生存期和作用域。确定变量的生存期和作用域。该项省略表示该项省略表示auto存储类型。存储类型。合肥工业大学Xuan shanli第六章第六章 函函 数数auto存储类型存储类型定义在复合语句的开始处。块内生存块内有效。定义在复合语句的开始处。块内生存块内有效。#includevoidmain(void)autointa,b;scanf(“%d,%d”,&a,&b);if(ba)intiTemp;iTemp=a;a=b;b=iTemp;printf(“Max=%d”,a);ab的的作作用
11、用域域iTemp的作用域。的作用域。生存期:生存期:执行到复合语句建立内存执行到复合语句建立内存变量。执行出复合语句变量消变量。执行出复合语句变量消亡。亡。iTempregister存储类型存储类型作用域和生存期和作用域和生存期和auto相同,相同,差别在于,如果差别在于,如果CPU内部的寄存内部的寄存器空闲,器空闲,则使用寄存器作为变量则使用寄存器作为变量的存储单元,以提高速度。主要的存储单元,以提高速度。主要用于循环变量。用于循环变量。合肥工业大学Xuan shanli第六章第六章 函函 数数static(静态静态)存储类型存储类型作用域:作用域:在定义的复合语句内引用,出了复合语句不可见
12、。在定义的复合语句内引用,出了复合语句不可见。生存期:生存期:从定义直到程序结束,执行出从定义直到程序结束,执行出时,原值并不消失,时,原值并不消失,只是不能引用。只是不能引用。voidrow(void);voidmain(void)intb;for(b=1;b=9;b+)row();voidrow(void)inta=1;intb;for(b=1;b=9;b+)printf(“%5d”,a*b);printf(“n”);a+;chp6ex6staticchp6ex5说明静态变量。说明静态变量。a的的作作用用域域生生存存期期从从第第一一次次调调用用到到程程序序结结束束。合肥工业大学Xuan s
13、hanli第六章第六章 函函 数数外部变量(外部变量(extern存储类型)存储类型)外部变量是定义在任何模块之外的变量。也称为外部变量是定义在任何模块之外的变量。也称为全局变量。全局变量。作用域:作用域:从定义直到文件结束。从定义直到文件结束。生存期:生存期:在程序的整个执行过程中。任何函数对外部变量的修在程序的整个执行过程中。任何函数对外部变量的修改都会影响其他函数对外部变量引用时的值。改都会影响其他函数对外部变量引用时的值。#includevoidadd(void);inta,b,c;voidmain(void)scanf(“%d,%d”,&a,&b);add();printf(“%d”
14、,c);voidadd(void)c=a+b;外部变量。外部变量。作作用用域域合肥工业大学Xuan shanli第六章第六章 函函 数数关于外部变量的几点说明:关于外部变量的几点说明:外部变量可以通过说明改变其作用域。外部变量可以通过说明改变其作用域。voidmain()inti;/*i为外部变量为外部变量*/voidmax(inta,intb)作作用用域域externi;新新的的作作用用域域外部变量可以被不同的文件共享。外部变量可以被不同的文件共享。file1.cfile2.cinta;externinta;文件文件1定义的外部变量。定义的外部变量。文件文件2通过说明使用通过说明使用文件文件
15、1的外部变量。的外部变量。如果只希望在本文件中使用,可以加如果只希望在本文件中使用,可以加static说明。说明。static合肥工业大学Xuan shanli第六章第六章 函函 数数关于外部变量的几点说明:关于外部变量的几点说明:模块设计的原则:内聚性强,耦合性弱。外部变量的使用占模块设计的原则:内聚性强,耦合性弱。外部变量的使用占用内存且增加模块的耦合性,因此,用内存且增加模块的耦合性,因此,应尽量不使用外部变量。应尽量不使用外部变量。当模块中出现和全局变量同名的局部变量时,局部变量在模当模块中出现和全局变量同名的局部变量时,局部变量在模块中优先。块中优先。inta;voidmain(vo
16、id)a=5;voidfun()inta;a=5;合肥工业大学Xuan shanli第六章第六章 函函 数数外部变量应用举例:用外部变量交换两个变量的值。外部变量应用举例:用外部变量交换两个变量的值。#includeinta,b;voidmain(void)scanf(“%d,%d”,&a,&b);fun();printf(“a=%d,b=%dn”,a,b);voidfun(void)intc;c=a;a=b;b=c;a、b外部变量。外部变量。ab合肥工业大学Xuan shanli第六章第六章 函函 数数外部变量的副作用外部变量的副作用#includeinti;voidprt(void);vo
17、idmain(void)for(i=0;i5;i+)prt();voidprt(void)for(i=0;i5;i+)printf(“%c”,*););printf(“n”);函数的作用:打印五个函数的作用:打印五个*,再回车。,再回车。几次调用函数?几次调用函数?i=0i=0i=0i=0i=0i=1i=2i=3i=4i=5i=5i=5i=5i=5合肥工业大学Xuan shanli第六章第六章 函函 数数6.3函数间的数据传递函数间的数据传递函数在调用的过程中,调用函数和被调函数存在数据的相互传函数在调用的过程中,调用函数和被调函数存在数据的相互传递。数据的传递包括两个方面:递。数据的传递包括
18、两个方面:将值传递给被调函数;将值传递给被调函数;将被调函数的结果返回给调用函数。将被调函数的结果返回给调用函数。调用函数调用函数被调函数被调函数向被调函数传递值。向被调函数传递值。将结果返回给调用函数。将结果返回给调用函数。合肥工业大学Xuan shanli第六章第六章 函函 数数数据传递方式数据传递方式通过函数参数传值或传地址;通过函数参数传值或传地址;通过返回值传递结果通过返回值传递结果;通过通过全局变量全局变量传递参数或结果。传递参数或结果。合肥工业大学Xuan shanli第六章第六章 函函 数数使用参数传递数据使用参数传递数据传值方式传值方式 通过实参与形参的结合,将通过实参与形参
19、的结合,将数据值传递给形参数据值传递给形参,形参的改变不,形参的改变不影响实参。影响实参。#includeintsplus(int,int);voidmain(void)inta,b,c;scanf(“%d,%d”,&a,&b);c=splus(a,b);printf(“a*b=%dn”,c);intsplus(intx,inty)intz;z=x*y;return(z);调调用用函函数数被被调调函函数数x、y形参。形参。a、b实参变量的值。实参变量的值。传递参数传递参数a:2b:3y:x:32z:6返回值返回值合肥工业大学Xuan shanli第六章第六章 函函 数数传地址方式传地址方式形参
20、定义为指针,实参为变量的地址,被调函数通过地址可以形参定义为指针,实参为变量的地址,被调函数通过地址可以修改地址对应的变量。修改地址对应的变量。#includevoidswap(int*,int*);voidmain(void)inta,b;scanf(“%d,%d”,&a,&b);if(ab)swap(&a,&b);printf(“n%d,%dn”,a,b);voidswap(int*x,int*y)intt;t=*x;*x=*y;*y=t;用用函函数数实实现现两两个个变变量量a、b值值的的交交换换46ab2000H2400Hxy2400H2000H参数变量是否可以实现交换?参数变量是否可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 第六 函数
限制150内