L’écriture de type de données abstrait présuppose une bonne connaissance des
pointeurs tant pour le maniement des structures\footnote{Voir p.
??.} que pour la mise en place des méthodes.
Rappel
En C, une fonction elle-même n’est pas une variable mais il est
possible de définir des pointeurs de fonctions que l’on peut
affecter, placer dans des tableaux (de pointeurs de fonctions),
passer en argument à des fonctions ou faire
retourner par des fonctions…
Déclaration
La déclaration d’un pointeur de fonction se fait de la façon suivante : int (*ptf) (int,char *) ; Déclaration d’un pointeur de fonction pour une fonction qui retourne
un entier et a deux arguments, un entier et un pointeur de type char.
Si on écrit : int *ptf (int,char *); on écrit un
prototype… Les parenthèses autour de l’identificateur
sont là pour préciser qu’il s’agit d’un pointeur et nom
d’une fonction bien précise.
Initialisation et utilisation
Un pointeur déclaré peut être initialisé comme toute variable, mais
ici avec un nom de fonction.
Exemple : int LireLigne (char *) ;
main ()
{
char tab[256] ;
int n ;
int (* ptf) (char *) ;
ptf = LireLigne ; /* Initialisation. */
n = (*ptf) (tab) ; /* Appel de LireLigne.*/
}
Dans le module Liste.c \footnote{c.f. Annexe},
on initialise les pointeurs de fonction
de la structure fonctions définie dans le fichier Liste.h :