Concept

Fonction variadique

Résumé
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. 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 . 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 . #include #include /* Renvoie la moyenne des valeurs réelles passées en paramètres. Le premier paramètre, le nombre de valeurs, doit être strictement positif. Les suivants doivent être des nombres réels (de type float ou double, pas int) / double moyenne(int nb_valeurs, double valeur1, ...) { double somme = valeur1; va_list params; // pointeur de la liste des paramètres va_start(params, valeur1); // initialise le pointeur grâce // au dernier paramètre fixe for (int i = 1 ; i < nb_valeurs ; ++i) { // récupérer le paramètre suivant de la liste: double valeur_suiv = va_arg(params, double); somme += valeur_suiv; } va_end(params); // fermeture de la liste return somme / nb_valeurs; } int main(void) { // exemple d'utilisation : printf ("%.3f\n", moyenne(3, 14.5, 18.0, 17.5)); // affiche 16.667 return 0; } 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) : #include / Pour va_list / #include / Pour printf / / À noter que
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.