返回值为函数指针的示例
2013-08-19 16:51
288 查看
#include<stdio.h> #include <assert.h> double GetMin(double *dbData, int iSize) // 求最小值 { double dbMin; int i; assert(iSize>0); dbMin=dbData[0]; for (i=1; i<iSize; i++){ if (dbMin>dbData[i]) { dbMin=dbData[i]; } } return dbMin; } double GetMax(double *dbData, int iSize) // 求最大值 { double dbMax; int i; assert(iSize>0); dbMax=dbData[0]; for (i=1; i<iSize; i++){ if (dbMax< dbData[i]) { dbMax=dbData[i]; } } return dbMax; } double GetAverage(double *dbData, int iSize) // 求平均值 { double dbSum=0; int i; assert(iSize>0); for (i=0; i<iSize; i++) { dbSum+=dbData[i]; } return dbSum/iSize; } double UnKnown(double *dbData, int iSize) // 未知算法 { return 0; } typedef double (*PF)(double *dbData, int iSize); // 定义函数指针类型 PF GetOperation(char c) // 根据字符得到操作类型,返回函数指针 { switch (c) { case 'd': return GetMax; case 'x': return GetMin; case 'p': return GetAverage; default: return UnKnown; } } int main(void) { double dbData[]={3.1415926, 1.4142, -0.5,999, -313, 365}; int iSize=sizeof(dbData)/sizeof(dbData[0]); char c; printf("Please input the Operation :\n"); c=getchar(); printf("result is %lf\n", GetOperation(c)(dbData,iSize)); // 通过函数指针调用函数 }
上述程序中前面4个函数分别实现求最大值、最小值、平均值和未知算法,然后实现了GetOperation函数。这个
函数根据字符的返回值实现上面4个函数。它是以函数指针的形式返回的,从后面的main函数的GetOperation(c)
(dbData, iSize)可以看出,通过这个指针可以调用函数。
相关文章推荐
- 返回值是函数指针的函数示例
- Golang初学者对函数返回值还是指针的测试
- C语言,仿内核方式实现分级打印 [附:函数指针、回调函数的小示例]
- 指针函数、函数指针及其示例
- 返回值为指针的函数 字符串的拼接
- 定义函数指针类型,示例代码
- 069.Pointer 指针作为函数的返回值
- PowerShell函数一次返回多个返回值示例
- 使用指针做函数返回值
- c++函数指针和返回值为指针的函数
- C函数只能有一个返回值,如果需要返回多个值,怎么办,其实很简单,只要将指针作为函数参数传递就可以了
- 函数返回值为指针的一个陷阱(使用inet_ntoa函数时遇到的问题)
- C++,常量,const,constant,引用,指针,形参,实参,函数,返回值
- 函数返回值系列之一返回指针类型的局部变量
- 函数指针,指针函数,返回值为指针的函数
- C++指针与函数—指针作为参数和返回值
- linux c 一站式学习 函数接口 返回值是指针的情况
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- C/C++&nbsp;函数指针,强制转换示例
- C语言 用指针作为函数返回值详解