#include <stdio.h>
#include <stdarg.h>
void f (int w,...)
{
//
// Dichiara le variabili che servono a contenere
// gli argomenti privi di parametri formali.
//
long double x;
long long int y;
int z;
//
// Dichiara il puntatore ai parametri.
//
va_list ap;
//
// Posiziona il puntatore dopo il primo parametro,
// ovvero dopo l'ultimo parametro dichiarato
// esplicitamente.
//
va_start (ap, w);
//
// Estrapola il secondo argomento della chiamata (portando
// avanti il puntatore di conseguenza.
//
x = va_arg (ap, long double);
//
// Mostra il valore del primo e del secondo argomento
// ottenuto dalla chiamata della funzione.
//
printf ("w = %i; ", w);
printf ("x = %Lf; ", x);
//
// Estrapola il terzo argomento.
//
y = va_arg (ap, long long int);
//
// Mostra il terzo argomento.
//
printf ("y = %lli; ", y);
//
// Estrapola il quarto argomento.
//
z = va_arg (ap, int);
//
// Mostra il quarto e ultimo argomento.
//
printf ("z = %i\n", z);
//
// Conclude la scansione degli argomenti.
//
va_end (ap);
//
return;
}
int main (int argc, char *argv[])
{
f (10, (long double) 12.34, (long long int) 13, 14);
return 0;
}