Une fonction peut être passée en argument, comme une variable
normale. Pour ce faire on manipule un pointeur vers la fonction.
Un pointeur p
vers la fonction suivante:
double f(int a, bool b);
est du type:
double (*p)(int, bool);
Ainsi, les lignes suivantes:
double (*p)(int, bool); p = &f; double x = (*p)(1, false);
déclarent un pointeur vers une fonction du même type que f
, le font
pointer sur f
, puis appellent la fonction pointée.
Pour passer une fonction d'un certain type comme argument, on procèdera
donc ainsi:
bool test_si_resultat_positif(double (*p)(int, bool), int x){ double z = (*p)(x, true); return (z>0); }
et l'appel se fera simplement:
bool b = test_si_resultat_positif(&f, 3);