En quoi ce pointeur de fonction est-il meilleur que if-else ou switch case? Est-ce parce que le pointeur de fonction aide les fonctions de rappel et favorise ainsi la mise en œuvre asynchrone?Pointeur de fonction
Répondre
Il est préférable que les fonctions ne soient pas connues au préalable. Comment concevez-vous la bibliothèque standard C qsort()
sans utiliser de pointeur de fonction?
"si les fonctions ne sont pas connues auparavant" c'est un point clé. Je voulais juste le souligner. – givanse
Ce n'est pas "mieux", c'est différent. Oui, le but principal du pointeur de fonction est de fournir une fonctionnalité de rappel. Non, ce n'est pas directement lié à l'asynchronisme.
Vérifiez this article pour plus d'informations sur les pointeurs de fonction.
Selon Nigel Jones, il améliore la lisibilité du code, entre autres
http://embeddedgurus.com/stack-overflow/2010/04/efficient-c-tip-12-be-wary-of-switch-statements/
Il fournit même quelques exemples:
pointeurs de fonction donnent lieu à une meilleure conception de votre code . Considérez quand vous avez une option d'appeler une fonction parmi cinquante fonctions. Quelle serait la taille de l'interrupteur? Cependant, vous pouvez facilement mapper tous les pointeurs de fonction selon leur id, et appeler la fonction appropriée de la carte en utilisant le "id". Le code serait facilement maintenu et semble soigné.
Il existe d'autres avantages et possibilités d'utilisation du pointeur de fonction. Pour une bonne explication, regardez le tutoriel here
En outre, vous avez des garanties de complexité en utilisant une carte que vous n'auriez pas dans un boîtier de commutation. Le compilateur peut ne pas toujours être capable de construire une table de saut, dans le cas où la recherche de la bonne fonction à appeler serait séquentielle. Dans une carte, la recherche serait un O (log N) très rapide, avec un arbre binaire, ou O (1) dans une carte de hachage. – lvella
- 1. pointeur de fonction
- 2. erreur de pointeur de fonction
- 3. Pointeur de fonction de modèle?
- 4. Pointeur de fonction vers la fonction membre
- 5. héritage pointeur de fonction typedef
- 6. pointeur de fonction sans typedef
- 7. Pointeur de fonction dans C
- 8. Rappel sans pointeur de fonction
- 9. C++ pointeur de fonction inline
- 10. Douteur du pointeur de fonction
- 11. Fonction pointeur Appels
- 12. Typedef fonction pointeur?
- 13. Fonction pointeur à élément
- 14. Fonction Char * (pointeur)
- 15. fonction javascript pointeur
- 16. Que représente la valeur du pointeur d'un pointeur de fonction?
- 17. avertissement de gcc pointeur à la fonction (type pointeur incompatible)
- 18. Créer un pointeur de fonction qui prend un pointeur de fonction comme argument
- 19. Créer un pointeur de fonction qui prend un pointeur de fonction comme argument
- 20. Impossible de convertir argument pointeur de fonction
- 21. Pointeur de fonction de membre polymorphe
- 22. Fonction Pointeur de la classe de base
- 23. C++ fonction-pointeur et héritage
- 24. C: pointeur de fonction et typedef problème
- 25. Création d'un pointeur de fonction inter-processus
- 26. Paramètres de fonction: Copie ou pointeur?
- 27. pointeur de fonction: adresse physique ou virtuelle
- 28. pointeur de fonction avec des arguments connus
- 29. Initialisation de pointeur? pour une fonction spécifique
- 30. Pointeur de fonction en tant qu'argument
Vous voudrez peut-être mentionner la langue que vous consultez. – griegs
Pourquoi, quelle différence ferait la connaissance du langage? –
Mieux dans quel contexte? Ce n'est pas mieux pour écrire des conditions ou des commutateurs ... – Stephen