在C中使用函数指针

时间:2012-03-12 08:14:56

标签: c

当我们只通过调用该函数来使用该函数时,将函数作为参数传递给另一个函数有什么好处。

5 个答案:

答案 0 :(得分:11)

这是模拟多态性和/或回调的一种方法。

在某些情况下,程序或客户端可能会受益于客户端入口点。这是实现这一目标的常用方法。它可以用于改进模块化或改善多个实现的物理分离。

答案 1 :(得分:5)

使用函数指针可以创建dynamic dispatch行为。动态“类型”而不是静态“类型”将“确定”将调用哪个函数。

这个概念在OOP语言中非常重要,可以使用函数指针创建。

答案 2 :(得分:1)

因为当写入函数指针的函数时,它不一定知道应该调用哪个函数(我希望这有点意义)。此外,可能会要求该函数使用不同的函数指针来执行不同的操作。

例如,C库具有qsort()功能。它需要一个函数指针来执行被排序对象的比较。因此,当qsort()本身被编写时,它(或编写它的程序员)不知道它将被要求排序的对象类型。因此,函数指针用于提供该功能。

此外,可能会要求qsort()在一次通话中对int进行排序,并在之后立即对struct foo个对象进行排序。传递函数指针允许以这样的方式编写qsort(),使得它不需要了解被排序的项目。该信息(被分类对象的大小以及如何比较它们)可以作为参数传递给它。

答案 3 :(得分:1)

正如Justin上面正确指出的那样,它用于模拟多态和回调。

您可以参考此link获取有关函数指针及其使用方法的详细信息。

答案 4 :(得分:0)

如果您事先(在编译时)不知道您将使用哪个函数,那么将(函数指针)函数放入变量中是有用的。

就像,当你可以写一个常量int x时,使用变量42有什么好处。