使用指针功能有什么好处?

时间:2012-05-15 12:06:38

标签: c++ visual-c++ function-pointers

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

在某些情况下你必须使用指针来实现功能,没有别的办法。例如,要实现callback函数,请指定比较器函数(sorting routines中的最后一个参数)。

编辑:正如评论中所指定的那样,这是关于C.函数指针来自C。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

实际上传递函数的指针比调用函数本身要慢一点。但差别很小,几乎没有任何影响。

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

答案 4 :(得分:0)

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

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