1. typedef有点类似于#define宏,用来定义一个同义的新的类型。用typedef来定义函数指针形式如下:
如果我们有一个函数:
那么我们可以这样用:
如意对于上面的定义可以这样理解:去掉typedef就形如正常的定义。同样的方式我们可以定义指针类型:
这样就可以用p来定义一个int型的指针类型了。
2. 一个复杂点的例子:
可以得到c的值是300
typdef int (*pFunc)(int, int);
如果我们有一个函数:
int Add(int a, int b)
{
return a +b;
}
那么我们可以这样用:
pFunc pf; pf = Add; int n = pf(3, 4);
如意对于上面的定义可以这样理解:去掉typedef就形如正常的定义。同样的方式我们可以定义指针类型:
typedef int *p;
这样就可以用p来定义一个int型的指针类型了。
2. 一个复杂点的例子:
typedef int (*pFunc)(int, int);
pFunc function1(char op);
// 上面的定义等同下面的定义:
// int (*function1(char op))(int, int);
// 以下代码演示函数指针的用法
int add(int a, int b)
{
return a + b;
}
int (*function2(char op))(int, int)
{
return function1(op);
}
pFunc function1(char op)
{
switch (op) {
case '+': return add;
default: return NULL;
}
return NULL;
}
int calc_func(int a, int b, char op)
{
pFunc fp = function1(op);
return fp(a, b);
}
// 计算a、b的和
int a = 100, b = 200;
int c = calc_func(a, b, '+');
可以得到c的值是300
本文介绍了如何使用C/C++中的typedef关键字定义函数指针,并通过一个具体的例子展示了函数指针的实际应用。此外,还详细解释了如何通过函数指针实现简单的计算器功能。
2351

被折叠的 条评论
为什么被折叠?



