Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Definizione
Le funzioni che ricevono un numero variabile
Funzioni con di parametri sono dette funzioni variadic o
numero variabile di argomenti funzioni varargs
tipo nomeFunzione(arg1, arg2, ...);
L’ellissi ... (tre punti) indica che ci possono
essere altri parametri dopo quelli fissi
Ver. 2.4
Deve esserci almeno un parametro fisso
L’ellissi può essere indicata solo come ultimo
elemento di una lista di parametri
Le macro e le definizioni da utilizzare sono
indicate in <stdarg.h>
© 2010 - Claudio Fornaro - Corso di programmazione in C
3 4
Inizializzazione Utilizzo
All’interno di una funzione variadic bisogna La macro
definire una variabile di tipo va_list, questa va_arg(argP, tipo)
(argument pointer) punterà in sequenza a restituisce un valore del tipo indicato
ciascuno degli argomenti aggiuntivi prelevandolo dall’elemento anonimo puntato
(“anonimi”), elencati dopo quelli fissi: da argP nella lista variabile, dopodiché
va_list argP; modifica argP affinché punti al successivo
La macro va_start inizializza la variabile elemento anonimo:
argP in modo che punti al primo degli x = va_arg(argP,int);
argomenti anonimi, è necessario fornire il Ogni chiamata a va_arg preleva il successivo
nome dell’ultimo argomento fisso valore dalla lista variabile
(nell’esempio seguente è arg2):
va_start(argP, arg2);
5 6
Terminazione Esempio
Dopo che gli argomenti anonimi sono stati #include <stdarg.h>
elaborati, per indicare che non si intende più #include <stdarg.h>
scandire gli elementi di argP, si deve void stampa(int quanti, ...);
chiamare la macro va_end prima che termini main()
{
la funzione che la chiama: stampa(0);
va_end(argP); stampa(1, "END");
I parametri possono essere scanditi più volte: stampa(2, "END", "with no exit code");
è sufficiente chiamare va_end e poi stampa(3, "END", "with code ", 8);
nuovamente va_start return 0;
}
7 8
11 12