指向函数的指针
函数可以在表达式中被解读为“指向函数的指针”,函数名就是该指针。“指向函数的指针”本质上也是指针(地址),所以可以将它赋值给指针型变量。
那么“指向函数的指针的变量”如何声明呢?
比如有以下函数原型:
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就可以对处理进行分配。
posted on 2019-10-14 11:00 freshair_cn 阅读(1008) 评论(0) 编辑 收藏 举报