资源描述:
《C语言指针学习课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、0第6章函数学习目标理解模块化程序设计思想。掌握函数的分类。学会定义和使用自定义函数。理解变量的作用域。了解变量的不同存储类别。2021/7/2816.1引言模块化程序设计基本思想:将一个大的/复杂的程序按功能分割成一些小的/简单的模块,特点:1、各模块相对独立、功能单一、结构清晰、接口简单2、控制了程序设计的复杂性3、提高元件的可靠性4、缩短开发周期5、避免程序开发的重复劳动6、易于维护和功能扩充开发方法:自上向下,逐步分解,分而治之2021/7/282C是模块化程序设计语言C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总是从
2、main函数开始,在main中结束函数不能嵌套定义,可以嵌套调用2021/7/2836.2函数的定义和使用6.2.1函数的概念函数分类1、标准函数(库函数):由系统提供2、用户自定义函数2021/7/284使用库函数应注意:1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件2021/7/2856.2.2函数的定义一般格式合法标识符函数返回值类型缺省int型无返回值void函数体函数类型函数名(形参类型说明表){说明部分语句部分}例有参函数intsum(inta,intb){intc;//声明部分c=
3、a+b;//语句returnc;}例空函数Empty(){}函数体为空例无参函数show(){printf(“Howareyou.”);}或show(void){printf(“Howareyou.”);}2021/7/2866.2.3函数的调用调用形式函数名(实参表);说明:1、实参与形参个数相等,类型一致,按顺序一一对应2、实参表求值顺序,因系统而定2021/7/287调用方式♣函数表达式:例d=sum(a,b);♣函数语句:例show();printf("%d",a);scanf("%d",&b);♣函数参数:例printf("%d",
4、sum(a,b));2021/7/288被调用函数的声明♣对被调用函数要求:必须是已存在的函数库函数:#include<*.h>用户自定义函数:函数声明♣函数声明一般形式:函数类型函数名(形参类型[形参名],…..);或函数类型函数名();//不推荐作用:告诉编译系统函数类型、参数个数及类型,以便检验函数定义与函数声明不同(未提供具体操作)函数声明位置:程序的数据说明部分(函数内或外)2021/7/289下列情况下,可不作函数声明1)如果被调函数的返回值是整型或字符型时,可以不对被调函数作声明,而直接调用。这时系统将自动对被调函数返回值按整型处理。2
5、)当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作声明而直接调用。3)如在所有函数定义之前,在函数外预先声明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。4)对库函数的调用不需要再作说明,但必须把该函数的头文件用include命令包含在源文件头部。2021/7/2810例函数声明举例main(){floata,b;intc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d",c);}max(floatx,floaty){floatz;z=x>y?x:y;
6、return(z);}int型函数可不作函数声明floatadd(floatx,floaty){floatz;z=x+y;return(z);}main(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}被调函数出现在主调函数之前,不必函数声明main(){floatadd(float,float);/*functiondeclaration*/floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);
7、}floatadd(floatx,floaty){floatz;z=x+y;return(z);}floatadd();2021/7/28116.2.4函数参数传递形参与实参形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式c=max(a,b);(main函数)(max函数)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、}max(intx,inty){intz;z=x>y?x:y;return(z);}形参实参2021/7/2