Les fonctions étant des objets, comme les tableaux et d'autres structures de données, il est utile de pouvoir les passer en argument à des fonctions. C'est notamment indispensable pour écrire des algorithmes numériques généraux.
Par exemple, on écrira la fonction newton avec deux paramètres fonctionnels pour la fonction f dont on calcule un zéro et sa dérivée fprime :
double newton(double f(double), 
              double fprime(double), 
              int n, double x0) {
  if (n == 0) {
    return x0;
  } else {
    double x = newton(f,fprime,n-1,x0);
    return x - f(x)/fprime(x);
  }
}
Techniquement, la valeur qui est passée en argument à une fonction n'est pas l'objet fonctionnel (le code) lui-même, mais l'adresse de ce code en mémoire, exactement comme pour les tableaux.