2010-06-16 116 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