3

使用指向函数的指针而不是函数本身的真正好处是什么?它是否使执行更快?或者当它被传递给另一个函数时它是否提供了便利?

4

5 回答 5

6

它使您能够在运行时“选择”业务逻辑的一个组件——与硬编码函数名称形成对比,这限制了您在编译时选择要使用的函数。

于 2012-05-15T12:08:14.203 回答
3

在某些情况下,您必须使用指向函数的指针,没有其他方法。例如,要实现回调函数,指定比较函数(排序例程中的最后一个参数)。

编辑:如评论中所述,这是关于 C 的。函数指针来自 C。

于 2012-05-15T12:11:22.897 回答
2

函数指针是您将函数存储在变量中并将它们传递给其他函数的方式。“常规功能”没有“优势”,它们是完全不同的东西,试图比较它们是没有意义的。这就像问“哪个更好,变量还是 if 语句?”

函数指针提供了一种原本不可用的功能。

于 2012-05-15T12:08:27.440 回答
0

事实上,传递一个函数的指针比调用函数本身要慢一点。但差异是如此之小,以至于几乎不会产生任何影响。

正如 Jon 所说,在某些情况下,当您可以将函数从程序的一部分传递到另一部分时,它会带来更大的灵活性。

于 2012-05-15T12:11:47.497 回答
0

函数指针用于许多不确定要调用哪个函数的情况。让我们举个例子。你想对数组进行排序。为此,您要编写一个通用的排序函数。现在这个排序函数需要比较数组元素。但是由于数组可以包含任何元素(int、浮点数、字符串、用户定义的类型等),所以这个排序函数如何比较元素。因此,在这种情况下,您可以将排序确定函数作为参数传递给此排序函数,并据此对数组进行排序。此外,它在其他方面也很有用。假设您要对字符串数组(一串数字)进行排序。您可能希望按数字或字母顺序对其进行排序。

在这种情况下,当您想对数字进行排序时,您可以传递比较函数,该函数根据转换为 int 的字符串的值进行比较。等等...

于 2012-05-16T07:42:04.350 回答