《PPT8-14 指向函数的指针作为函数参数.pdf》由会员分享,可在线阅读,更多相关《PPT8-14 指向函数的指针作为函数参数.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、指向函数的指针作为函数参数 实例8.10定义长度为12的double 数组,数组存储数据如下: double a=1.5,3.8,5.6,7.8,91.6,1.61,13 .3,15.0,17.5,19.9,21.7,23.0; 函数指针案例讲解 编写函数实现下面的功能。 (1)求数组全部的元素值之和; (2)求数组元素中的最大值; (3)求下标为奇数的数组元素之和; (4)求各元素的平均值。 函数指针案例讲解 解题思路:分别设计4个函数实现上 述4个功能,使4个函数具有相同的 返回值类型、参数个数、参数顺序和 参数类型,唯一不同的就是函数的名 字和函数的具体实现,这样就可以使 用唯一个函数指
2、针先后调用这4个函 数实现题目要求。 函数指针案例讲解 arr_add(double arr,int n) odd_add(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) #include #define N 12 double arr_add(double arr,int n) double arr_max(double arr,int n) double odd_add(double *p, int n) double arr_ave(double *p,int n) arr_add(double
3、arr,int n) odd_add(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); 123101112 a process(a,N,arr_add); a12arr_add 返回数组各元素之和,在 process中打印 arr_add(double arr,int n
4、) odd_add(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); 123101112 a process(a,N,arr_max); a12arr_max 返回数组各元素的最大值, 在process中打印 arr_add(double arr,int n) odd_a
5、dd(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); 123101112 a process(a,N,odd_add); a12odd_add 返回数组奇数下标元素之和, 在process中打印 arr_add(double arr,int n) odd_add(dou
6、ble arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); 123101112 a process(a,N,arr_ave); a12arr_ave 返回数组各元素的平均值, 在process中打印 arr_add(double arr,int n) odd_add(double arr
7、,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); 123101112 a process(a,N,pt); a12pt 返回数组各元素之和,在 process中打印 double (*pt)(double *,int); pt = arr_add; pt arr_add(double arr
8、,int n) odd_add(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); a12pt 返回数组各元素的最大值, 在process中打印 123101112 a process(a,N,pt); double (*pt)(double *,int); pt = ar
9、r_max; pt arr_add(double arr,int n) odd_add(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); a12pt 返回数组奇数下标元素之和, 在process中打印 123101112 a process(a,N,pt); double
10、 (*pt)(double *,int); pt = odd_add; pt arr_add(double arr,int n) odd_add(double arr,int n) arr_ave(double arr,int n) arr_max(double arr,int n) void process(double *p,int n,double (*fun)(double *,int ) double result; result = (*fun)(p,n); printf(%8.2lfn,result); a12pt 返回数组各元素的平均值, 在process中打印 123101112 a process(a,N,pt); double (*pt)(double *,int); pt = arr_ave; pt 解决问题 这就是指向函数的指针作为函数参数。同学们,你们学 会了吗?