函数指针:
函数名就是函数操作代码在内存中的起始地址,就像数组名是数组在内存中的起始地址。
所以使用函数指针时,直接传入函数名就什么了。函数指针也是C中实现多态的一种方法。
int x2(int x) { return x * x;}
int x3(int x) {return x * x * x;}
void func(int (*pf)(int), int x) { cout << pf(x) << endl;}
== void func(int (*pf)(int), int x) { cout << (*pf)(x) << endl;}
func(x2, 4); // 16
func(x3, 4); // 64
void *func(int* (*pf)(int*, const int**, float, char * const), double *); // 呵呵,头晕吧
void (*pf[10])(int); // 表示pf是10个函数指针的数组
函数指针的一个用法是建立一个菜单驱动程序:
用户从菜单中选择一个选项,每个选项由不同的函数提供服务,每个函数的指针存放在函数指针数组中。用户选项作为数组下标,数组中的指针用于调用这个函数。
void (*pf[3])(int) = {func1, func2, func3};