函数指针

函数也可以作为参数传递给其他的函数,传递的是函数的地址,函数的地址就是函数名.

申明函数指针

和申明指向某种数据类型的指针一样,申明函数指针时,也必须指定指针指向的函数类型,这就意味着申明应指定函数的返回类型和函数的形参列表.如有如下函数:

double* fun(int a, int b);

则申明指向上述函数的函数指针应如下:

double* (*pfun)(int a,int b);

仔细比较可知,两个申明的方式一样,只是fun(*pfun)的区别,因为fun是函数,则(*pfun)也是函数,若(*pfun)是函数,那么pfun就是函数指针了.

使用函数指针

因为(*pfun)就表示的是函数,所以就可以直接当做函数名来用,所以下列用法是一样的:

double* ans1 = fun(a,b);
pfun = fun; // pfun指向fun函数
double* ans2 = (*pfun)(a,b); // 使用函数指针调用fun函数

事实上,C++也运行直接像使用函数那样使用函数指针,所以,下面的用法也是可以的:

double* ans2 = pfun(a,b);

使用typedef简化

typedef的作用就是创建一个类型的别名.typedef也可以简化相应的函数指针;如:

typedef double* (*pfun)(int a, int b);
pfun fun1 = f1;
pfun fun2 = f2;
```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容