Loading... <div class="tip inlineBlock warning"> 问:如果我们要调用一个函数,我们完全可以调用一个函数名呀,我们为什么还要傻乎乎的还要取弄一个函数指针呢? </div> <div class="tip inlineBlock success"> 答:所以我们更多时候函数指针一般是作为函数的形参的。 </div> <div class="tip inlineBlock warning"> 问:那么作为函数形参起到了一个什么作用呢? </div> <div class="tip inlineBlock success"> 答:就是让我们封装的函数的功能更加强大。 </div> 案例: ```C #include<stdio.h> int my_add(int a,int b) { return a + b; } int my_sub(int a, int b) { return a - b; } int my_mult(int a, int b) { return a * b; } int my_div(int a, int b) { return a / b; } //有没有发现这4个函数的形参类型都是 int 函数名 (int,int) //这样我们就可以通过相应的方式把这四个函数打包在一起 //定义一个函数 实现上述的功能 int my_calc(int a, int b, int (*p)(int, int)) { return p(a, b); } //这个函数功能就很强大了,别看只有一点点代码 int main(int argc, char* argv[]) { printf("%d ", my_calc(50, 20,my_add)); printf("%d ", my_calc(50, 20, my_sub)); printf("%d ", my_calc(50, 20, my_mult)); printf("%d ", my_calc(50, 20, my_div)); //我们在调用的仅仅是my_calc,但起作用的是4个独立的函数 return 0; } ``` 运行结果:![](https://blog.fivk.cn/usr/uploads/2021/02/520691087.png) * 我们定义了一个calc函数 实现了add,sub,mult,div这4个函数的功能 * 当然这4个函数的返回值和形参类型都需要一样 * 否则calc函数里接收的指针类型就是不一样的,会报错。 <div class="tip inlineBlock share"> 这样就可以让某个函数具备不同的函数功能,其实本质就是执行了函数指针。 这样就非常方便^_^ 像这种思想在我们后面要学习C++、算法、C语言模板库会经常使用。 </div> 最后修改:2021 年 02 月 04 日 © 允许付费转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏