13.5.2 Définition et utilisation d'un pointeur de fonction

On commence par créer un type T_FONCTION pour caractériser les fonctions « qui reçoivent deux paramètres short int et double et qui renvoient un résultat de type short int » : typedef short int T_FONCTION( short int n, double x ) ; Pour définir un pointeur sur une fonction de type T_FONCTION, il suffit d'écrire très classiquement : T_FONCTION* ptr_fct ; ptr_fct est alors un pointeur sur une « fonction à 2 paramètres short et double qui renvoie un entier ».
short int (*ptr_fct)(short int a, float b) ; /* bof ! */ On rappelle que le nom d'une fonction représente son adresse. Le pointeur de fonction ptr_fct peut donc être affecté par : ptr_fct = f1 ; si f1 et f2 sont deux fonctions déclarées par : T_FONCTION f1 ; /*notez la simplicité des prototypes avec typedef !*/ On peut donc faire varier la fonction appelée par le programme en modifiant le contenu du pointeur. L' appel de la fonction dont l'adresse figure dans le pointeur ptr_fct s'écrit alors :
(*ptr_fct) ( 5, 12.4f )
ou res = (*ptr_fct)( 5, 12.4f )
|