In che modo la funzione printf può assumere un numero variabile di parametri mentre vengono emessi?

Mi chiedo davvero come è stato eseguito printf. Esiste una struttura di array di parametri in C? Posso definire la mia funzione personalizzata come printf?

Un tipo speciale va_list viene utilizzato per l’utilizzo di discussioni con elenchi di variabili. leggi questo

Potresti usare la macro va_arg . Ecco un esempio

 #include  /* printf */ #include  /* va_list, va_start, va_arg, va_end */ int FindMax (int n, ...) { int i,val,largest; va_list vl; va_start(vl,n); largest=va_arg(vl,int); for (i=1;ival)?largest:val; } va_end(vl); return largest; } int main () { int m; m= FindMax (7,702,422,631,834,892,104,772); printf ("The largest value is: %d\n",m); return 0; } 

Un programma è conforms ad un ABI specifico e la convenzione di chiamata è definita dall’abi.

Una convenzione di chiamata definisce come i parametri passati a una funzione, di solito sono memorizzati in registri o / e nello stack. La funzione recupera i parametri di conseguenza e questo vale anche per le funzioni variadiche .

Certo, puoi definire tu stesso la funzione variadica.