函數指針如何比if-else或switch case更好?這是因爲函數指針有助於回調函數,從而促進異步實現嗎?函數指針
函數指針
回答
如果事先不知道功能會更好。如何設計C標準庫qsort()
而不使用函數指針?
「如果事先不知道函數」,這是一個關鍵點。我只是想強調一下。 – givanse 2012-01-06 18:07:23
這不是「更好」,它是不同的。是的,函數指針的主要目的是提供回調函數。不,它與異步沒有直接關係。
有關函數指針的更多信息,請查看this article。
函數指針導致代碼的一個更好的設計。考慮何時可以選擇從五十個函數中調用一個函數。開關盒有多大?但是,您可以根據自己的id輕鬆映射所有函數指針,並使用「id」從映射中調用適當的函數。代碼很容易維護,看起來很整潔。
還有其他的好處和使用功能指針的權力。 爲了一個很好的解釋,看看教程here
另外,您在使用映射時不會遇到複雜性保證,因爲這種映射在switch-case中不會有。編譯器可能並不總是能夠建立一個跳轉表,在這種情況下,要調用的正確函數的搜索將是順序的。在一個映射中,搜索將是一個非常快的O(log N),帶有一個二叉樹,或者一個散列映射中的O(1)。 – lvella 2012-06-13 03:30:33
- 1. c函數指針反函數指針
- 2. 指針?指針函數?
- 3. 函數指針指向一個函數指針的函數
- 4. 函數指針
- 5. 函數指針
- 6. 函數指針
- 7. 函數指針
- 8. 函數指針?
- 9. 函數指針
- 10. 函數指針
- 11. 函數指針
- 12. 函數指針
- 13. 函數指針
- 14. 函數指針不帶指針參數
- 15. 函數指針/函數表
- 16. 成員函數指針指向函數指針?
- 17. C++通過函數指針指向另一個函數指針
- 18. 指向結構函數指針的函數指針
- 19. 將指針指向成員函數作爲函數指針
- 20. 指向函數指針
- 21. 指向函數的指針
- 22. C函數指針鑄造空指針
- 23. C++中函數指針的指針
- 24. 陣列的函數指針的指針
- 25. C指針函數
- 26. C:函數指針
- 27. Python函數指針
- 28. C#函數指針
- 29. MPI +函數指針?
- 30. JScript函數指針
你可能想提及你所指的語言。 – griegs 2010-06-16 04:42:00
爲什麼知道語言會有什麼不同? – 2010-06-16 04:45:28
在什麼情況下更好?寫條件或開關不好...... – Stephen 2010-06-16 04:45:45