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);