资源描述:
《第5章函数(c语言基础)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章函数§5.1函数的基本概念1)除main外,其它为系统函数、自编函数,系统函数:由系统提供,放在不同的头文件中,用户可调用。自编函数:由用户按语法规则编写。C程序由一个main和任意个函数组成。2)除main函数外,其它函数可相互调用main()abcdxz3)函数不可嵌套定义,但可以嵌套调用。4)函数分为有参与无参函数5)程序从main开始执行,最后又回到main函数结束。例5.1intmax(inta,intb){if(a>b)returna;elsereturnb;}voidmain(){int
2、max(inta,intb);intx,y,z;printf("inputtwonumbers:");scanf("%d%d",&x,&y);z=max(x,y);printf("maxmum=%d",z);}§5.2函数的定义[返回类型符]函数名(){说明部分语句}1.无参函数定义形式注意:返回类型符表示函数的返回值类型。例:voidHello(){printf("Hello,world");}这里,Hello为函数名,Hello函数是一个无参函数,当被其它函数调用时,输出Helloworld字符串
3、。类型标识符函数名(形参表列)形参说明{说明部分语句}2.有参函数定义形式例:求二数之最大值intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}用return,语句,返回函数的值。或:intmax(intx,inty){intz;z=x>y?x:y;return(z);}§5.3函数的调用5.3.1形式参数和实际参数函数的参数分为形参和实参两种。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,发生函数调用时,主调函数把实参的值传
4、送给被调函数的形参从而实现主调函数向被调函数的数据传送。形参与实参调用时:实参值单向传递形参。函数被调用时,临时分配单元给形参,调用完毕,这些单元被释放。注:实参可为表达式,只传递表达式的值。实参:出现在调用函数中,形参:出现被调用函数中。实参、形参类型一致。可在形参表列中对形参说明。例5.3:voidmain(){intk,n;printf("inputnumber");scanf("%d",&n);k=s(n);printf("n=%d,k=%d",n,k);}ints(intm){m=m+1
5、returnm;}本程序运行时,输入5,运行结果为:n=5,k=6在执行函数过程中,形参m的值变为6。返回主函数之后,输出实参n的值仍为5。可见实参的值不随形参的变化而变化。思考:程序做如下改动,会出现什么问题?如果将程序第7行改为printf("n=%d,k=%d,m=%d",n,k,m);如果将程序第6行改为k=s(n,n);如果删除程序中的scanf("%d",&n);例5.4:请分析程序的运行结果。#include"stdio.h"voidmain(){inta=3,b=5;swap(a,b);prin
6、tf("a=%d,b=%d",a,b);}swap(intx,inty){inttemp;temp=x;x=y;y=temp;printf("x=%d,y=%d",x,y);}5.3.2函数的调用C语言中,函数调用的一般形式为:函数名(【实际参数表】)对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实参之间用逗号分隔。函数调用的方式一般有两种:函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。函数
7、语句:函数调用的一般形式加上分号即构成函数语句例5.5求二实数之和#includefloatadd(floatx,floaty)/*函数定义*/{floatz;z=x+y;returnz;}main(){floata,b,c;scanf(“%f,%f”,&a,&b);c=add(a,b);/*函数调用*/printf("sum=%f";c);}其中c=add(a,b)是一个赋值表达式,把add的返回值赋予变量c。例5.6#include"stdio.h"voidprintsta
8、r(){printf("***************");}voidprint_message(){printf("Howdoyoudo!");}voidmain(){printstar();print_message();printstar();}程序运行结果为:***************Howdoyoudo!***************函数printstar和p