资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五章 函数与编译预处理概述概述函数是程序代码的一个自包含单元,用于完函数是程序代码的一个自包含单元,用于完 成某一特定的任务。成某一特定的任务。C+C+C+C+是由函数构成的,是由函数构成的,函数是函数是C+C+C+C+的基本模块的基本模块。有的函数完成某一操作;有的函数计算出一有的函数完成某一操作;有的函数计算出一 个值。通常,一个函数即能完成某一特定操个值。通常,一个函数即能完成某一特定操 作,又能计算数值。作,又能计算数值。为什么要使用函数?为什么要使用函数?1 1 1 1、避免重复的编程。、避免重复的编程。2 2 2 2、使程序更加模块化,便于阅读、修改。、使程序更加模块化,便于阅读、修改。参数(多个)参数(多个)函数值函数值( ( ( (唯一)唯一)函数体函数体所编写的函数应尽量少与主调函数发生所编写的函数应尽量少与主调函数发生 联系,这样便于移植。联系,这样便于移植。说明:说明:1 1 1 1、一个源程序文件由一个或多个函数组成,编译程序以文、一个源程序文件由一个或多个函数组成,编译程序以文 件而不是以函数为单位进行编译的。件而不是以函数为单位进行编译的。2 2 2 2、一个程序可以由多个源文件组成,可以分别编译,统一、一个程序可以由多个源文件组成,可以分别编译,统一 执行。执行。 3 3 3 3、一个程序必须有且只有一个、一个程序必须有且只有一个main( )main( )main( )main( )函数,函数,C+C+C+C+从从 main( )main( )main( )main( )函数开始执行。函数开始执行。4 4 4 4、C+C+C+C+语言中,语言中,所有函数都是平行独立的,无主次、相互所有函数都是平行独立的,无主次、相互 包含之分包含之分。函数可以嵌套调用,不可嵌套定义函数可以嵌套调用,不可嵌套定义。5 5 5 5、从使用角度来说,分标准函数和用户自定义函数;从形、从使用角度来说,分标准函数和用户自定义函数;从形 式来说,分无参函数和有参函数。式来说,分无参函数和有参函数。库函数是库函数是C+C+C+C+编译系统已预定义的函数编译系统已预定义的函数,用户根据,用户根据 需要可以直接使用这类函数。库函数也称为标准函需要可以直接使用这类函数。库函数也称为标准函 数。数。为了方便用户进行程序设计,为了方便用户进行程序设计,C+C+C+C+把一些常用数学把一些常用数学 计算函数(如计算函数(如sqrt()sqrt()sqrt()sqrt()、exp()exp()exp()exp()等)、字符串处理函数、等)、字符串处理函数、 标准输入输出函数等,都作为库函数提供给用户,标准输入输出函数等,都作为库函数提供给用户, 用户可以直接使用系统提供的库函数。用户可以直接使用系统提供的库函数。库函数有很多个,当用户使用任一库函数时,在程库函数有很多个,当用户使用任一库函数时,在程 序中必须包含相应的头文件。序中必须包含相应的头文件。 如如 #include#include#include#include等。等。用户在设计程序时,可以将完成某一相对独立功能用户在设计程序时,可以将完成某一相对独立功能 的程序定义为一个函数。用户在程序中,根据应用的程序定义为一个函数。用户在程序中,根据应用 的需要,由的需要,由用户自己定义函数用户自己定义函数,这类函数称为用户,这类函数称为用户 自定义的函数。自定义的函数。 根据定义函数或调用时是否要给出参数,又可将函根据定义函数或调用时是否要给出参数,又可将函 数分为:无参函数和有参函数。数分为:无参函数和有参函数。 函数定义的一般形式函数定义的一般形式一、无参函数一、无参函数 主调函数并不将数据传给被调函数。主调函数并不将数据传给被调函数。类型说明类型说明 函数名(函数名(voidvoidvoidvoid) 函数体函数体 无参函数主要用于完成某一操作。无参函数主要用于完成某一操作。不传递参数不传递参数参数(多个)参数(多个)函数值函数值( ( ( (唯一)唯一)函数体函数体void main(void )void main(void )void main(void )void main(void ) printstar ( ); printstar ( ); printstar ( ); printstar ( );print_message ( );print_message ( );print_message ( );print_message ( );printstar( ); printstar( ); printstar( ); printstar( ); void printstar (void )void printstar (void )void printstar (void )void printstar (void ) couty)? x : y ; z=(xy)? x : y ; z=(xy)? x : y ; z=(xy)? x : y ;return z; return z; return z; return z; void main (void )void main (void )void main (void )void main (void ) int a,b,c; int a,b,c; int a,b,c; int a,b,c;cinab; cinab; cinab; cinab;c= c= c= c=max (a , b)max (a , b)max (a , b)max (a , b) ; ; ; ;couty)? x : y ; z=(xy)? x : y ; z=(xy)? x : y ; z=(xy)? x : y ;return z; return z; return z; return z; void main (void )void main (void )void main (void )void main (void ) int a,b,c; int a,b,c; int a,b,c; int a,b,c;cinab; cinab; cinab; cinab;c= c= c= c=max (a , b)max (a , b)max (a , b)max (a , b) ; ; ; ;couty)? x : y ; z=(xy)? x : y ; z=(xy)? x : y ; z=(xy)? x : y ;return z; return z; return z; return z; void main (void )void main (void )void main (void )void main (void ) int a,b,c; int a,b,c; int a,b,c; int a,b,c;cinab; cinab; cinab; cinab;c=max ( c=max ( c=max ( c=max (a+ba+ba+ba+b , , , , a a a a* * * *b b b b) ;) ;) ;) ;couty) if (xy) if (xy) if (xy)return x ; return x ; return x ; return x ;else return y; else return y; else return y; else return y; 若函数体内没有若函数体内没有returnreturnreturnreturn语语 句,就一直执行到函数体句,就一直执行到函数体 的末尾,然后返回到主调的末尾,然后返回到主调 函数的调用处。函数的调用处。先计算,后返回先计算,后返回可以有多个可以有多个returnreturnreturnreturn语句语句不带返回值的函数可说明为不带返回值的函数可说明为voidvoidvoidvoid型。型。函数的类型与函数参数的类型没有关系。函数的类型与函数参数的类型没有关系。doubledoubledoubledouble blink ( int a, int b) blink ( int a, int b) blink ( int a, int b) blink ( int a, int b)如果函数的类型和如果函数的类型和returnreturnreturnreturn表达式中的类型不一表达式中的类型不一 致,则以函数的类型为准。致,则以函数的类型为准。函数的类型决定返回函数的类型决定返回 值的类型。值的类型。对数值型数据,可以自动进行类型转对数值型数据,可以自动进行类型转 换。换。 既然函数有返回值,这个值当然应属于某一个确定既然函数有返回值,这个值当然应属于某一个确定 的类型,应当在定义函数时指定函数值的类型。的类型,应当在定义函数时指定函数值的类型。 intintintint max (float a, float b) max (float a, float b) max (float a, float b) max (float a, float b) / / / / 函数值为整型函数值为整型 函数返回值的类型,也是函数的类型函数返回值的类型,也是函数的类型
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号