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 ?
To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager