资源描述:
《数组作函数参数函数嵌套与递归调用变量作用域.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、临沂大学汽车学院:韩晓翠第7章用函数实现模块化程序设计授课要点数组元素作函数参数数组名作函数参数函数的嵌套调用变量的存储类别和作用域数组元素作函数参数和普通变量作函数参数效果和用法一样#includevoidmyfun(intx,inty,intz);main(){inta[3]={1,2,3};myfun(a[0],a[1],a[2]);}voidmyfun(intx,inty,intz){printf("%d,%d,%d",x,y,z);}运行结果:1,2,3问题1:调
2、用函数输出数组元素的值。#includevoidswap1(intx,inty){intz;z=x;x=y;y=z;}main(){inta[2]={1,2};swap1(a[0],a[1]);printf("a[0]=%da[1]=%d",a[0],a[1]);}值传递12a调用前FFAAFFAE12x调用时yFF01FAAC21x交换yFF01FAAC12a返回FFAAFFAE授课要点数组元素作函数参数数组名作函数参数函数的嵌套调用变量的存储类别和作用域数组名作函数
3、参数——地址传递C语言规定,不带任何下标的数组名代表数组的首地址,即第一个元素的地址例如,有定义语句intnum[10];那么,数组名num和&num[0]的意义是相同的。采用数组名作为函数参数就是将数组的首地址作为函数参数传递给被调用的函数。main(){intnum[10];/*……*/sort(num);/*……*/}voidsort(intarr[10]){/*……*/}voidsort(intarr[]){/*……*/}voidsort(intarr[20]){/*……*/}main(
4、){intnum[10];/*……*/sort(num,10);/*……*/}voidsort(intarr[],intn){/*……*/}问题2:实现两个整型变量的值的互换。(假设两个整型变量是一个长度为2的整型数组的元素)问题2解决---自定义函数voidswap2(intx[2]){intz;z=x[0];x[0]=x[1];x[1]=z;}形参用数组定义,intx[]12a调用前12ax调用21ax交换21a返回#includevoidswap2(intx[],int
5、n){intz;z=x[0];x[0]=x[1];x[1]=z;}main(){inta[2]={1,2};swap2(a,2);printf("a[0]=%da[1]=%d",a[0],a[1]);}地址传递问题2解决问题3:定义一个函数,求全班学生的某门课程总分,并将总分返回到主函数中输出。问题3解决---自定义函数求总分floatsum(floatstu[],intn){inti;floattotal=0;for(i=0;i6、tal;}形参用数组定义n为数组长度#includefloatsum(intstu[],intn);voidmain(){floatscore[10];inti;floattotal;printf("Input10scores:");for(i=0;i<10;i++)scanf("%f",&score[i]);total=sum(score,10);printf("sumis:%f",total);}floatsum(floatstu[],intn){inti;floa
7、ttotal=0;for(i=0;i8、后的数组输出。讨论并总结数组元素作函数参数时,实参和形参间的传递方式是什么?数组名作函数参数时,实参和形参的写法有什么不同?数组元素作函数参数时,实参与形参间单向值传递。结论1:数组名作函数参数时,实参和形参间发生地址传递;在主调函数与被调函数分别定义数组,且类型应一致;形参数组大小(多维数组第一维)可不指定,形参数组名表示地址;实参写数组名,形参为数组定义。结论2:学以致用寻找你身边的一个实际问题,用到数组名作函数参数。例如:定义一个函数,实现10个同学身高的比较,从中找出最高身高,并返回到主