您的位置:首页 > 编程语言 > C语言/C++

C++学习14:使用typedef定义函数指针类型

2017-09-04 23:12 751 查看
最近在HM中遇到了typedef函数指针,现在来学习一下。

推荐阅读

http://blog.csdn.net/qll125596718/article/details/6891881

http://www.baidu.com/link?url=fIxmNZe4-1MTHD3bGGRxuUIwFdUyykOWWcFLwyWUK8GjD77jFcPNKvhRU9nzbl0KGRdvBcxUmiSEpUFkaPi-j4kW-BVtvWAjFrfr0f8vBuq&wd=&eqid=f6883844000009490000000359ad6a6c

1.函数指针

直接从例子入手,首先来看一个简单的函数指针:

#include"iostream"
using namespace std;

int cal_max(int x,int y)
{
return (x>y)?x:y;
}

int (*FP)(int,int);

int main()
{
int x = 1;
int y = 2;

FP = cal_max;
//FP = &cal_max;
cout << (*FP)(x,y) << endl;
cout << FP(x,y) << endl;
system("pause");
}


可以看到,这里首先定义了cal_max函数,功能是计算两个int数中的最大值。同时定义了一个函数指针FP,其形式上和cal_max相同。在main函数中,FP指向了cal_max,有两种方式赋值和调用了函数,效果是一样的。

2.函数指针类型

用typedef定义函数指针类型,让函数调用更加方便,下面看例子:

#include"iostream"
using namespace std;

int cal_max(int x,int y)
{
return (x>y)?x:y;
}

typedef int (*FP)(int,int);

int main()
{
int x = 1;
int y = 2;

FP fp = NULL;
//fp = cal_max;
fp = &cal_max;
cout << (*fp)(x,y) << endl;
cout << fp(x,y) << endl;
system("pause");
}


可以看到这里使用typedef定义了FP类型,然后定义了FP类型的变量fp,将fp指向cal_max,通过fp即可实现函数cal_max的功能。

使用typedef定义函数指针类型的优点在于:

1、可以用来定义该函数类型的函数指针,就不用每次使用函数指针都要写一次函数原型了;

2、有了类型名,就可以使用在容器里面,譬如map< int, 类型名 >,用于实现灵活的函数调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐