Bonjour,
J'aimerais savoir quel est l'intéret d'utiliser un pointeur sur une fonction. Un exemple :
ma_fonction ( arg1, arg2, (*pointeur_vers_une_fct)(parg1, parg2) )
Merci d'avance pour votre aide.
Bonjour,
J'aimerais savoir quel est l'intéret d'utiliser un pointeur sur une fonction. Un exemple :
ma_fonction ( arg1, arg2, (*pointeur_vers_une_fct)(parg1, parg2) )
Merci d'avance pour votre aide.
Un cas typique d'utilisation d'un pointeur de fonction est le mécanisme de callback : on appèle une fonction A, en lui donnant en argument l'adresse d'une fonction B rendant un service don la fonction A a besoin.
Prend la fonction standard qsort(), par exemple. Elle permet de trier des "trucs" (n'importe quoi) en utilisant l'algorithme "quick sort". Seulement, pour trier des trucs, elle doit savoir comment comparer deux "trucs". On l'utilise dont en passant en argument un tableau de "trucs" à trier, ainsi que l'adresse d'une fonction à appeler pour comparer deux "trucs".
Si tu regarde la déclaration de qsort(), ça donne :
Les trois premier arguments servent à passer le tableau de "trucs" à trier. Le quatrième argument est un pointeur vers la fonction de comparaison. La fonction qsort() pourra ainsi comparer deux "trucs" en appelant la fonction de comparaison passée en argument sous forme de pointeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));
Merci, ta réponse est très claire. Ca approche un peu la notion de redefinition en Java ... non ?
Partager