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