资源描述:
《c语言程序设计(第八章)课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Ch8函数内容提要:★概述★函数定义的一般形式★函数参数和函数的值★函数的调用、嵌套调用、递归调用★数组作为函数参数★局部变量和全局变量★变量的存储类别★特点:各模块相对独立、功能单一、结构清晰、接口简单控制了程序设计的复杂性缩短开发周期避免程序开发的重复劳动易于维护和功能扩充8.1概述C是模块化程序设计语言★基本思想:将一个大的程序按功能分割成一些小模块★开发方法:自上向下,逐步细化C是模块化程序设计语言C程序结构C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总是从main函数开始
2、,main函数结束时结束函数不能嵌套定义,可以嵌套调用所有子函数都是平行的,任何函数都不属于其他函数函数分类从用户角度标准函数(库函数):由系统提供用户自定义函数从函数形式无参函数有参函数使用库函数应注意:1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件8.2函数的定义一般格式合法标识符函数返回值类型缺省int型无返回值void函数体函数类型函数名(形参类型说明表){说明部分语句部分}现代风格:例有参函数(现代风格)intmax(intx,inty
3、){intz;z=x>y?x:y;return(z);}例有参函数(现代风格)intmax(intx,y){intz;z=x>y?x:y;return(z);}例空函数dummy(){}函数体为空例无参函数printstar(){printf(“**********”);}或printstar(void){printf(“**********”);}函数类型函数名(形参表)形参类型说明{说明部分语句部分}传统风格:例有参函数(传统风格)intmax(x,y)intx,y;{intz;z=x>y
4、?x:y;return(z);}形参与实参形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式例比较两个数并输出大者max(intx,inty){intz;z=x>y?x:y;return(z);}main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}8.3函数参数和函数的值说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换
5、———函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放例计算x的立方#includefloatcube(floatx){return(x*x*x);}main(){floata,product;printf("Pleaseinputvalueofa:");scanf("%f",&a);product=cube(a);printf(”Cubeof%.4fis%.4f",a,product);}xaproduct××××1.21.21.728返回语
6、句形式:return(表达式);或return表达式;或return;功能:使程序控制从被调用函数返回到调用函数中,同时把返回值带给调用函数说明:函数中可有多个return语句若无return语句,遇}时,自动返回调用函数,返回的是一个不确定的值若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换void型函数没有返回值例无返回值函数voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}--函数的值printstar(
7、){printf("**********");}main(){inta;a=printstar();printf("%d",a);}例:下列函数的不同。voidprintstar(){printf("**********");}main(){inta;a=printstar();printf("%d",a);}例:函数返回值类型转换max(floatx,floaty){floatz;z=x>y?x:y;return(z);}main(){floata,b;intc;scanf("%f,%f",&a,&
8、b);c=max(a,b);printf("Maxis%d",c);}8.4函数的调用调用形式函数名(实参表);说明:实参与形参个数相等,类型一致,按顺序一一对应实参表求值顺序,因系统而定(TurboC自右向左)调用方式函数语句:例printstar();printf(“Hello,World!”);函数表达式:例m=max(a,b)*2;函数参数:例printf(“%d”,max(a,b));m=max(a,max(b,c));intf(int