指向函数的指针

函数可以在表达式中被解读为“指向函数的指针”,函数名就是该指针。“指向函数的指针”本质上也是指针(地址),所以可以将它赋值给指针型变量。

那么“指向函数的指针的变量”如何声明呢?

比如有以下函数原型:

int func(double d);

保存指向该函数的指针的变量的声明如下:

int (*func_p)(double);

其中func_p是指针变量。

通过func_p调用func大体上是这样子:

int (*func_p)(double); // declaration

func_p = func; // assignment

func_p(0.5);  // now func_p is functionally the same as func

将“指向函数的指针”保存在变量中的技术经常被运用在以下场合:

1) GUI按钮控件“当自身被按下时需要调用的函数”

2) 根据“指向函数的指针的数组”对处理进行分配

“指向函数的指针的数组”这样定义:

int (*func_table[])(double) = {

func0,

func1,

func2,

func3

};

func_table[i](0.5);  //调用func_table[i]的函数,参数是0.5

使用上面的写法,不需要很长的switch case,只需要通过i就可以对处理进行分配。

原文地址:https://www.cnblogs.com/freshair_cnblog/p/11670325.html