Un petit exemple vaut mieux qu'un long discours... en tous cas pour commencer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <stdio.h>
#include <stdlib.h>
void msg (char * p)
{
printf ("%s\n", p);
}
void func (void (* fonction) (char * p), char * p)
{
fonction (p);
}
int main (void)
{
func (msg, "Bonjour !");
return EXIT_SUCCESS;
} |
Dans cet exemple on appel la fonction
func qui elle, appelle la fonction
msg dont on a passé l'adresse en tant que premier argument (voir le main). Pour passer un argument à cette fonction
msg, il faut que la fonction appelante (ici
func), possède un second argument du même type que ce que la fonction appelée (ici
msg) possède.
L'appel comme fait dans le main reste des plus simple. C'est un principe largement utilisé dans GTK+ qu'on appel également plus communément
callback, c'est un des principal cas d'utilisation des pointeurs sur fonctions, l'autre étant de la POO en C par exemple mais pas très pratique d'utilisation ! Si tu as des question hésite pas

Partager