2、o.h>voidprintstar(){printf("*****************");}voidprintmessage(){printf("Hello,world.");printstar();}voidmain(){printstar();printmessage();}51.C程序的执行从voidmain函数开始,调用其他函数后仍回到voidmain函数,程序在voidmain函数结束时结束2.所有子函数都是平行的,任何函数都不属于其他函数3.从用户的角度看,函数可分为:标准函数,即
3、库函数自定义函数4.从函数形式看,可分为:无参数函数:如printstar()有参数函数:如printf(“….”)说明6§8.2函数定义的一般形式函数定义的一般形式:类型说明函数名([形式参数说明]){函数体}形式参数说明方法:类型说明变量名[,类型说明变量名]……71、无参函数的定义形式类型说明函数名(){函数体}例如:voidprinthello(){printf("Hello,world.");}82、有参函数的定义形式类型说明函数名(形式参数说明){函数体}3、空函数的定义形式类型说明函数名(
4、[形式参数说明]){}例如:又如:intsum(intx,inty)voidprinthello(charname[]){intz;{printf("Hello,%s",name);z=x+y;}return(z);}9§8.3函数参数和函数的值一、形式参数和实际参数函数参数:用于数据的交流形式参数:定义函数时使用的参数实际参数:引用函数时使用的参数10例8.2#includeintmax(intx,inty){intz;z=(x>y)?x:y;return(z);}voidmain(
5、){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}x、y是形式参数a、b是实际参数/*定义一个函数max()*/111、定义函数时,必须说明形参的类型2、函数被调用前,形参不占用内存;函数调用结束后,形参所占用的内存也将被回收。形参与实参各占一个独立的存储空间3、实参可以是常量、变量或表达式说明例#includeintmax(intx,inty){intz;z=(x>y)?x:y;return(z);}mai
6、n(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}124、实参与形参的类型必须一致5、C语言中实参对形参的数据传递是“值传递”,是单向传递说明总结:函数中对形参变量的操作不会影响到调用函数中的实参变量,即形参值不能传回给实参13注意:在内存中,实参单元与形参单元是不同的单元,形参的值如果发生改变,并不会改变主调函数实参的值例8.2a#includeintmax(intx,inty){intz;z=(x>y
7、)?x:y;return(z);}main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}intmax(floatx,floaty){floatz;z=(x>y)?x:y;return(z);}main(){floata,b;intc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d",c);}1.5,2.5x=1.5y=2.514#includeintm
8、ax(intx,inty){intz;z=(x>y)?x:y;return(z);}voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}intmax(intx,inty){x=(x>y)?x:y;return(x);}intmax(inta,intb){intc;c=(a>b)?a:b;return(c);}思考:将