资源描述:
《函数定义的形式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第八章函数1、概述2、函数定义的形式3、函数的参数5、函数的调用4、函数的值7、变量的作用范围8、函数的存储类别9、内部函数和外部函数*10、多文件的程序的运行*6、数组作为函数参数概述(1)一件事情往往要实现多个功能一个程序多个函数一个C程序可由一个主函数和若干个函数构成。mainabcdefghhieg概述(2)由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。iprint_star(){printf(“******************”);}概述(3)*****************Howdoy
2、oudo!*****************print_message(){printf(“Howdoyoudo!”);}main(){printstar();/*调用printstar函数*/print_message();/*调用print_message函数*/printfstar();/*printstar函数*/}关于函数调用的几点说明1、一个源程序文件由一个或者多个函数组成。一个源程序文件是一个编译单位,而不是以函数为单位进行编译.2、一个C程序由一个或者多个源文件组成。3、C程序的执行从main函数开始,调用其它函数后,流程回
3、到main函数。4、所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,函数间可以互相调用,但是不能调用main函数.5、从用户使用的角度看,函数有两种:标准函数和用户自己定义的函数.6、从函数的形式看,函数有两种:无参函数和有参函数.2、有参函数的定义形式类型标识符函数名(形式参数表列){声明部分语句}函数定义的形式(1)1、无参函数的定义形式类型标识符函数名(){声明部分语句}intmax(intx,inty){intz;z=x>y?x:y;return(z);}函数类型函数名(参数类型参数名,…
4、…,参数类型参数名)print_message(){printf(“Howdoyoudo!”);}关于定义的说明(1)1、max为函数名,括号中有两个形式参数x和y,均是整型。在调用时,主调函数把实参的值传递给被调用函数max中的形参x和y,这时x和y才获得相应的存储单元。其本质是进行值的复制.2、花括弧内是函数体,它包括声明部分和语句部分。在声明部分定义函数中所用的变量(局部变量)。intmax(intx,inty){intz;z=x>y?x:y;return(z);}关于定义的说明(2)3、在语句部分中求解,return(z)的作用是将z的
5、值作为整个函数的值带回到主调函数,return后面括号中的值z就是函数带回的值即函数返回值。在函数定义时已指定max函数为整型,在函数体中也定义z为整型,二者达到一致。4、如果在定义函数时不指定函数类型,系统会隐含指定函数类型为int型。因此上面定义的max函数左端的int可以省写。max(intx,inty){intz;z=x>y?x:y;return(z);}函数参数(1)形式参数和实际参数在调用函数时,大多数情况下,主调函数和被调用函数之间有数据传递关系。这就是前面提到的有参函数。在定义函数时函数后面括弧中的变量名称为“形式参数”(简称“形参
6、”),intmax(intx,inty)在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”),c=max(a,b)。例(2)例8.2调用函数时的数据传递通过函调用,使两个函数中的变量发生联系.main(){inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“Maxis%d”,c);}intmax(intx,inty){intz;z=x>y?x:y;return(z);}abc=max(a,b);说明(1)(5)实参变量对形参变量的数据传递“值传递”,即单
7、向传递,只由实参传给形参,而不能由形参传回来给实参.在内存中,实参单元与形参单元是不同单元。2xa23yb33xa22yb3swap(intx,inty){intt;t=x;x=y;y=t;}main(){inta=2,b=3;if(a
8、变为3和2,而a和b仍为2和3.函数的返回值通常,希望通过函数调用使主函数能得到一个确定的值,这就是函数的返回值。例如,例