指针函数和函数指针
来源:互联网 发布:数据分析师笔试题目 编辑:程序博客网 时间:2024/05/02 02:53
1.指针函数
指针函数:返回指针的函数。形式如下,
int *pfun(int, int);
其中*的优先级小于(),因此pfun表示为一个函数,函数返回一个指针,指向的内容为int型。
2.函数指针
函数指针:指向函数的指针变量
int (*pfun)(int, int);
通过括号强行将pfun首先与“*”结合,也就意味着,pfun是一个指针,接着与后面的“()”结合,说明该指针指向的是一个函数,然后再与前面的int结合,也就是说,该函数的返回值是int。由此可见,pfun是一个指向返回值为int的函数的指针。
3.函数指针作为函数返回值
上面的指针函数指向的是int型,一般还有char型等,还有一种少见指向类型为函数。例如:
int (*ff(int))(int *, int);
其中,ff是一个函数,接着与前面的“*”结合,说明ff函数的返回值是一个指针。
然后再与后面的“()”结合,也就是说,该指针指向的是一个函数。
这种写法看起来很难懂,可以用typedef,使得声明变得简单
typedef int (*PF)(int *, int);
这样就定义了返回值的类型。
再用PF作为返回值来声明函数:
PF ff(int)
程序清单 1 求最值与平均值示例1 #include<stdio.h>2 #include <assert.h>3 double GetMin(double *dbData, int iSize) // 求最小值4 {5 double dbMin;6 int i;7 8 assert(iSize>0);9 dbMin=dbData[0];10 for (i=1; i<iSize; i++){11 if (dbMin>dbData[i]) {12 dbMin=dbData[i];13 }14 }15 return dbMin;16 }1718 double GetMax(double *dbData, int iSize) // 求最大值19 {20 double dbMax;21 int i;2223 assert(iSize>0);24 dbMax=dbData[0];25 for (i=1; i<iSize; i++){26 if (dbMax< dbData[i]) {27 dbMax=dbData[i];28 }29 }30 return dbMax;31 }3233 double GetAverage(double *dbData, int iSize) // 求平均值34 {35 double dbSum=0;36 int i;37 38 assert(iSize>0);39 for (i=0; i<iSize; i++)40 {41 dbSum+=dbData[i];42 }43 return dbSum/iSize;44 }4546 double UnKnown(double *dbData, int iSize) // 未知算法47 {48 return 0;49 }5051 typedef double (*PF)(double *dbData, int iSize); // 定义函数指针类型52 PF GetOperation(char c) // 根据字符得到操作类型,返回函数指针53 {54 switch (c)55 {56 case 'd':57 return GetMax;58 case 'x':59 return GetMin;60 case 'p':61 return GetAverage;62 default:63 return UnKnown;64 }65 }6667 int main(void)68 {69 double dbData[]={3.1415926, 1.4142, -0.5,999, -313, 365};70 int iSize=sizeof(dbData)/sizeof(dbData[0]);71 char c;7273 printf("Please input the Operation :\n");74 c=getchar();75 printf("result is %lf\n", GetOperation(c)(dbData,iSize)); // 通过函数指针调用函数76 }
- 指针函数和函数指针
- 函数指针和指针函数
- 指针函数和函数指针
- 指针函数和函数指针
- 函数指针和指针函数
- 函数指针和指针函数
- 函数指针和指针函数
- 指针函数和函数指针
- 函数指针和指针函数
- 指针函数和函数指针
- 函数指针和指针函数
- 指针函数和函数指针
- 指针函数和函数指针
- 指针函数和函数指针
- 函数指针和指针函数
- 函数指针和指针函数
- 函数指针和指针函数
- 函数指针和指针函数
- python解析xml模块
- J2EE总结
- 设计模式–Adapter模式(适配器模式)
- 成员函数指针与高性能的C++委托
- 详细的描写linux命令,绝对强大(2)
- 指针函数和函数指针
- 用户控件
- Android开发之路六---UI组件
- linux安装boost
- windows下asm创建及管理过程
- 化云为雨备份先行 备份到云的思前想后
- PHY管理接口
- 学习Java需要达到的25个目标
- 12.12