资源描述:
《C语言程序设计教学课件 马学文 第7章 函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章函数主要内容7.1概述7.2函数的定义7.3函数的参数和返回值7.4函数的调用大学计算机基础2网络信息中心教研室主要内容7.8函数应用举例7.7内部函数和外部函数7.6变量的作用域与存储类别7.5数组作函数参数大学计算机基础3网络信息中心教研室7.1概述1、一个c语言程序由一个或多个源程序文件组成(适合分别编写,编译,提高编程效率)。2、一个源程序文件由一个或多个函数组成(以源文件为单位进行编译)。3、c语言程序的执行顺序:从main函数开始,调用其它函数后回到main函数中,结束整个程序的运行(系统定义的函数)。大学
2、计算机基础4网络信息中心教研室7.1概述5、函数分类标准函数(库函数)用户函数有参函数无参函数4、所有函数都是平行的,即函数相互独立,不可以嵌套定义,但可以相互调用,嵌套调用,递归调用(不可以调用main函数)。大学计算机基础5网络信息中心教研室7.2函数的定义1、无参函数定义(一般是执行一组操作)类型标识符函数名(){变量声明部分;执行语句部分;}指定函数返回值的类型,省略为int;空类型(void)表示无返回值用有效的C语言标识符:规则同变量命名函数头函数体例如:#includemain()/*主函数*
3、/{printf(“”);}大学计算机基础6网络信息中心教研室7.2函数的定义2、有参函数定义类型标识符函数名(类型名形式参数1,类型名形式参数2,…){变量声明部分;执行语句部分;}例如intmax(intx,inty)/*函数头*/{intz;/*函数体中变量的声明*/z=x>y?x:y;/*执行语句部分*/return(z);/*执行语句部分*/}形参的数据类型形参名称:命名规则同变量名指定函数返回值的类型,省略为int;空类型(void)表示无返回值用大学计算机基础7网络信息中心教研室7.2函数的定义#inclu
4、deintmax(intx,inty)/*函数头*/{intz;/*函数体中变量的声明*/z=x>y?x:y;/*执行语句部分*/return(z);/*执行语句部分*/}main(){inta,b,c;printf(“请输入两个整数:”);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“最大值是:%d”,c);}形式参数实际参数返回变量z的值作为函数返回值大学计算机基础8网络信息中心教研室7.3函数的参数和返回值1形式参数和实际参数2函数的返回值大学计算机基础9网络信息中心
5、教研室7.3.1形式参数和实际参数1定义函数时函数名后面括号中的变量名称2形式参数的概念实际参数的概念调用函数时函数名后面括号中的参数实参与形参说明①形参在函数调用前不占用内存。因为形参只有在函数被调用时才分配内存单元,调用结束后立即释放所占内存。②形参只能是变量,而实参可以是常量,变量或表达式。(必须有确定的值)③被定义函数中必须指定形参的类型。④实参与形参的个数、类型应一致。⑤实参对形参的数据传递是单向传递,只能由实参传给形参,反之不可以。大学计算机基础10网络信息中心教研室7.3.1形式参数和实际参数例、调用函数时的数
6、据传递#includesum(intx,inty,intz)/*3.为x,y,z开辟单元接受实参的值*/{z=x+y;/*4.执行函数体*/}/*5.结束调用,x,y,z被释放*/main(){inta=1,b=2,c=0;/*1.开辟三个单元a,b,c分别存1,2,0*/sum(a,b,c);/*2.调用函数,a,b,c是实参*/printf(“c=%d”,c);/*6.输出c值*/}此例说明:C函数调用是传值调用,即参数值的传递是单向的,不能在函数体内改变实参的值。大学计算机基础11网络信息中心教研
7、室7.3.2函数的返回值(1)函数的返回值是通过return语句实现。return语句形式:return(表达式);return表达式;return;/*没有确定返回值*/(2)若函数不需要返回值,函数体中可以不含return语句,此时执行到函数体最后一条语句后,自动执行一条return语句。(3)函数返回值类型:定义函数时应予以指定,若不加指定,则当做整型(int)处理。同时返回值类型应与return语句表达式类型一致,若不一致,以函数值类型为准进行转换。(4)为了明确表示不带回返回值,可以用“void”定义“空类型”。大
8、学计算机基础12网络信息中心教研室7.3.2函数的返回值例:将上例修改为以下程序#includeintsum(intx,inty)/*3.为x,y开辟单元并接受实参的值1/2*/{intz;/*4.在函数内使用的变量*/z=x+y;/*5.执行函数体*/returnz;/