函数的参数传递和嵌套(九)

函数的参数传递和嵌套(九)

ID:5309751

大小:184.00 KB

页数:9页

时间:2017-11-23

函数的参数传递和嵌套(九)_第1页
函数的参数传递和嵌套(九)_第2页
函数的参数传递和嵌套(九)_第3页
函数的参数传递和嵌套(九)_第4页
函数的参数传递和嵌套(九)_第5页
资源描述:

《函数的参数传递和嵌套(九)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、函数的参数传递和嵌套、递归调用授课班级:授课时间:主讲:形参与实参1、形式参数:定义函数时函数名后面括号中的变量名;2、实际参数:调用函数时函数名后面括号中的表达式或变量名。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);}max(intx,inty){intz;z=x>y?x:y;return(z);}形参实参函数的参

2、数及传递方式值传递方式函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。特点:1、形参与实参占用不同的内存单元2、单向值传递:只能由实参传向形参,而形参的值不会影响到实参的值。函数的参数值传递方式/*值传递举例*/#includemain(){intx=7,y=11;printf("x=%d,y=%d",x,y);swap(x,y);printf("x=%d,y=%d",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;}值传递方式举

3、例例子图解711x:y:调用前:调用:711a:b:711x:y:swap:711x:y:117a:b:temp调用结束:711x:y:嵌套调用C规定:函数定义不可嵌套,但可以嵌套调用函数函数的嵌套调用main()调用函数a结束a函数b函数调用函数b#includevoidmain(){inta,b,c,d;scanf("%d%d%d",&a,&b,&c);d=dif(a,b,c);printf("Max-Min=%d",d);}/*求最大与最小之差*/intdif(intx,inty,intz){returnmax(x

4、,y,z)-min(x,y,z);}/*求最大数*/intmax(intx,inty,intz){intr;r=x>y?x:y;return(r>z?r:z);}/*求最小数*/intmin(intx,inty,intz){intr;r=x

5、…….return(2*z);}intf1(intx){inty,z;……z=f2(y);…….return(2*z);}intf2(intt){inta,c;……c=f1(a);…….return(3+c);}函数的递归调用说明:C编译系统对递归函数的自调用次数没有限制,每调用函数一次,在内存堆栈区分配空间,用于存放函数变量、返回值等信息,所以递归次数过多,可能引起堆栈溢出#includeintfac(intn){intf;if(n<0)printf("error!");elseif(n==0

6、

7、n==1)f=1;elsef=fac(n-1

8、)*n;return(f);}main(){intn,y;printf("Inputaintegernumber:");scanf("%d",&n);y=fac(n);printf("%d!=%1d",n,y);}递归调用求阶乘作业:P102:3-5

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。