资源描述:
《C语言课件)-函数与宏定义》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章函数与宏定义C程序由一个主函数main()和任意个函数组成。由主函数调用其他函数,其他函数也可以互相调用,且同一函数可以被一个或多个函数调用任意次。以此完成下面两个功能:(1)使程序具有“积木”功能。(模块化)(2)使程序具有“重构”功能main(){…a()…b()…c()…}a(){…a1()…}b(){…b1()…b2()…}c(){…c1()…}a1(){…}b1(){…}b2(){…}c1(){…}1)除main外,其它为标准库函数、用户自定义函数,标准库函数:由系统提供,用户可调用。用户自定义函数:由用户按语法规则编写。C程序由一个main
2、和任意个函数组成。在C语言中,函数的含义不是数学中的函数关系,而是一个处理。它可以进行数值运算、信息处理、控制决策,即把一段程序的工作放在函数中进行。2)除main函数外,其它函数可相互调用main()abcdxz3)函数不可嵌套定义,具有全局性、平行性,4)函数分为有参与无参函数5)程序从main开始执行,最后又回到main函数结束。库函数简介系统自带的标准库函数根据不同的功能作用放在不同的头文件中。stdio.h用于标准输入/输出math.h用于数学计算ctype.h用于字符处理string.h用于字串处理time.h用于时间/日期
3、的处理dir.h用于控制目录和路径graphics.h用于图形操作dos.hbios.h用于接口处理库函数的作用(1)使程序更具有“独立性”和“可移植”性。(2)使用时只需在程序的开头加上一条语句:#include<.h>根据使用的函数来确定(3)使程序具有“模块化”。6.1函数概念6.1.1函数定义[存储类型符][类型标识符]函数名([形参列表])形参说明{说明部分执行部分}函数体[存储类型符][类型标识符]函数名([形参说明表]){说明部分执行部分}函数体例:求二数之最大值intmax(x,y)intx,y;{intz;z=x>y?x
4、:y;return(z);}本函数中出现了return,语句,其返回值一般与函数类型一致.intmax(intx,inty){intz;z=x>y?x:y;return(z);}6.1.2函数声明和调用调用函数时应对被调用函数进行声明(说明),使系统知道本函数将要用到某个函数及它的类型,以便主调函数值作处理。(函数名相当于一变量,但应有所区别)函数声明的一般形式:[存储类型符][返回值类型符]函数名([形参说明表]);如:intmin(intx,inty);一、函数的声明例:求二实数之和。main(){floatadd();floata,b,c;scanf(
5、"%f,%f",&a,&b);c=add(a,b);printf("sum=%f";c);}floatadd(floatx,floaty);{floatz;z=x+y;returnz;}函数声明以下几种情况可省略对被调函数的声明:(1)当返回值为整型、字符型。(2)在调用之前定义函数。(3)在整个文件的开头定义函数。(1)无返回值的情况函数名([实参表列]);(2)有返回值的情况变量名=函数名([实参表列]);二、调用方式例:intmax(intx,inty){intz;z=x>y?x:y;return(z);}main(){inta,b,c;scanf("
6、%d,%d,",&a,&b);c=max(a,b);printf("max=%d",c);}上例函数调用中参数传递过程为:c=max(a,b);在main主函数中max(x,y)intx,y;{intz;z=x>y?x:y;return(z);}abcxyz101515101515例阅读下列程序,写出运行结果swap(x,y)intx,y;{intt;t=x;x=y;y=t;printf("x=%d,y=%d",x,y);}main(){inta,b;scanf("%d,%d",&a,&b);if(a
7、,b=%d",a,b);}abxyt15191519151915调用时:实参值单向传递形参。函数被调用时,临时分配单元给形参,调用完毕,这些单元被释放。实参:出现在调用函数中的参数。形参:出现被调用函数中的参数。6.1.3函数传值方式一、函数参数实参可为表达式,其传递为值传递。实参可为常量、变量或表达式,实参与形参类型必须一致。在被定义的函数中,必须指定形参的类型,可在形参说明部分说明,也可在形参表列中说明。如如:intmax(intx,inty){}注:二、函数返回值语句或return表达式;通过函数调用使用函数能得到一个确定的值,这就是函数的返回值
8、。说明:(1)函数的返回值由return获得;一个函