函数指针及含参函数指针做参数的实现

转自:https://blog.****.net/shengnan_wu/article/details/8116935

  1. 函数指针是指向函数的指针变量。c在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针指向的地址处。有了指向函数的指针变量后。可以通过该指针变量调用函数,函数指针有两个用途:调用函数、做函数的参数:

    1. 调用函数,如下所示:

函数指针及含参函数指针做参数的实现

输出结果如下:

函数指针及含参函数指针做参数的实现

由以上可以说明成功调用。

 

   b.无参函数指针做参数的实现,如下(标准写法)所示:

函数指针及含参函数指针做参数的实现

 

输出结果如下:

函数指针及含参函数指针做参数的实现

 

还有以下写法也能成功,因为c语言标准规定可以这样用:

函数指针及含参函数指针做参数的实现

 

也能成功输出

 

c.带参有返回值的函数指针做参数的

 

函数指针及含参函数指针做参数的实现

 

输出结果如下:

函数指针及含参函数指针做参数的实现

 

而不能写成如下所示:

函数指针及含参函数指针做参数的实现

 

也可写成以下形式,其中涉及到函数指针类型的转换:

 

2.函数指针数组的实用之处:当我们需要判断大量条件的时候,并且在每一个条件都有相应的处理函数,这时实用switch...case..的代码量会很大,并且效率会比较低,这个时候就可以使用函数指针数组来解决这个问题了,可以使用每个条件为数组下表:如下所示:函数指针及含参函数指针做参数的实现

结果如下

函数指针及含参函数指针做参数的实现