2010-06-16 142 views
0

函数指针如何比if-else或switch case更好?这是因为函数指针有助于回调函数,从而促进异步实现吗?函数指针

+1

你可能想提及你所指的语言。 – griegs 2010-06-16 04:42:00

+0

为什么知道语言会有什么不同? – 2010-06-16 04:45:28

+2

在什么情况下更好?写条件或开关不好...... – Stephen 2010-06-16 04:45:45

回答

2

如果事先不知道功能会更好。如何设计C标准库qsort()而不使用函数指针?

+0

“如果事先不知道函数”,这是一个关键点。我只是想强调一下。 – givanse 2012-01-06 18:07:23

2

这不是“更好”,它是不同的。是的,函数指针的主要目的是提供回调函数。不,它与异步没有直接关系。

有关函数指针的更多信息,请查看this article

1

函数指针导致代码的一个更好的设计。考虑何时可以选择从五十个函数中调用一个函数。开关盒有多大?但是,您可以根据自己的id轻松映射所有函数指针,并使用“id”从映射中调用适当的函数。代码很容易维护,看起来很整洁。

还有其他的好处和使用功能指针的权力。 为了一个很好的解释,看看教程here

+0

另外,您在使用映射时不会遇到复杂性保证,因为这种映射在switch-case中不会有。编译器可能并不总是能够建立一个跳转表,在这种情况下,要调用的正确函数的搜索将是顺序的。在一个映射中,搜索将是一个非常快的O(log N),带有一个二叉树,或者一个散列映射中的O(1)。 – lvella 2012-06-13 03:30:33