函數指針如何比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. 指針?指針函數?
- 2. 函數指針指向一個函數指針的函數
- 3. 函數指針
- 4. 函數指針
- 5. 函數指針
- 6. 函數指針
- 7. 函數指針
- 8. 將指針指向成員函數作爲函數指針
- 9. 指向結構函數指針的函數指針
- 10. 指向函數指針
- 11. 指向函數的指針
- 12. C函數指針鑄造空指針
- 13. C++中函數指針的指針
- 14. 陣列的函數指針的指針
- 15. C++函數指針
- 16. NULL函數指針
- 17. Python函數指針
- 18. 函數和指針
- 19. MPI +函數指針?
- 20. C#函數指針
- 21. Golang,指針,函數
- 22. Reg函數指針
- 23. 函數與指針
- 24. C指針函數
- 25. c函數指針
- 26. 指針函數C++
- 27. 函數指針數組指針用作函數的返回值
- 28. 函數指針和函子
- 29. 將成員函數指針轉換爲普通函數指針
- 30. 寫入(函數原型,函數指針,外部指針)更小
你可能想提及你所指的語言。 – griegs 2010-06-16 04:42:00
爲什麼知道語言會有什麼不同? – 2010-06-16 04:45:28
在什麼情況下更好?寫條件或開關不好...... – Stephen 2010-06-16 04:45:45