title: Fonction variadique
text: # Fonction variadique
  
  En programmation informatique, une fonction variadique est une fonction d'arité indéfinie, c'est-à-dire qui accepte un nombre variable de paramètres.
  
  De nombreuses opérations mathématiques et logiques peuvent se représenter sous forme de fonctions variadiques. Par exemple, l'addition de nombres ou la concaténation de chaînes de caractères peuvent s'appliquer à un nombre arbitraire d'opérandes.
  
  ## Implémentations
  
  ### C
  
  Le langage C permet la définition de fonctions variadiques.
  
  Les exemples les plus connus sont les fonctions standard d'entrée-sortie printf et scanf.
  
  La récupération des arguments se fait grâce au type va_list et aux macros va_start, va_arg et va_end de <stdarg.h>. La fonction doit alors trouver un moyen de connaître le type des arguments qui lui ont été fournis, ceux-ci étant choisis par l'utilisateur. Néanmoins, le prototype d'une fonction variadique doit comporter au moins un paramètre muet dont le type est connu.
  
  Exemple : la fonction suivante illustre l'utilisation de <stdarg.h>.
  
  La fonction suivante écrit les données fournies sur l'entrée standard, les types étant décrits dans une chaîne de format (comme avec printf) :
  
  Ce programme affiche :
  
  ### Java
  
  Les méthodes variadiques existent en Java depuis la version 5. Un paramètre (le dernier, s'il y en a plusieurs) peut être déclaré variadique en ajoutant trois points de suspension après son type. Ce paramètre sera en fait un tableau dont les éléments, du type déclaré, prendront les valeurs des paramètres effectifs multiples.
  
  Exemple :
  
  L'invocation de cette méthode pourra se faire avec n'importe quel nombre de paramètres :
  
  ### PHP
  
  PHP, depuis la version 4, permet de définir des fonctions variadiques. Au sein d'une telle fonction, les paramètres peuvent être obtenus à l'aide des fonctions func_num_args, func_get_arg et func_get_args.
  
  Exemple de code :
  
  Depuis la version 5.6, il est possible (et préférable) d'utiliser l'opérateur ..., appelé splat operator :
  
  De plus, depuis la version 7.0, il est possible de spécifier le type des paramètres :
  
  ### python
  
  Exemple de code :
  
  ### Tcl
  
  Le langage Tcl] permet la définition de fonctions variadiques depuis le début.
  
  Exemple de code :
  
  