Exemple 1

Ci-dessous l'exemple de la fonction addn qui réalise la somme de ses paramètres optionnels.
#include <stdio.h>
#include <stdarg.h>
/********************************************************************/
/*                                                                  */
/*                              addn                                */
/*                                                                  */
/*   But:                                                           */
/*      réalise l'addition d'un nombre variable de paramètres       */
/*                                                                  */
/********************************************************************/
int addn(int nbopd, ...)     /* nbopd = nombre d'opérandes du add   */
{                            
int i, s = 0;                
va_list(ap);                 /* déclaration de ap                   */
                             
va_start(ap,nbopd);          /* initialisation de ap                */
for( i = 1; i <= nbopd; i++)
   s = s + va_arg(ap,int);   /* va_arg() donne le paramètre courant */
va_end(ap);                  /* on a fini                           */
return(s);
}

/********************************************************************/
/*                            main                                  */
/********************************************************************/
int main(void)
{
printf("resu = %d\n",addn(3,10,11,12));   /* imprime 33 */
return 0;
}
Dans cet exemple, le problème du nombre de paramètres effectifs a été réglé par un paramètre obligatoire de la fonction : nbopd. En ce qui concerne le type des paramètres effectifs, ils sont tous supposés être entiers, d'où le va_arg(ap,int).



Matthieu Moy 2017-02-08