/ / chiama le chiamate con una quantità diversa di argomenti [duplicato] - c ++, funzione, parametri, argomenti

chiamate di funzione con differenti quantità di argomenti [duplicato] - c ++, funzione, parametri, argomenti

Ad esempio, una funzione che può assumere quantità illimitate (o, più precisamente, un numero molto grande) degli stessi argomenti del tipo, diciamo intero e quindi rendi tutti gli interi passati un valore di 5.

Quello che chiedo è, posso, se posso, fare una funzione con una quantità non fissa di parametri.

void setIntToFive(UNKNOWN AMOUNT OF INTS){
//a for loop to assign a value to all the passed arguments
}

Quindi chiamalo con quantità diverse di argomenti ogni volta

int a;
int b = 5;
setIntToFive(a,b);
int c;
setIntToFive(a,b,c);//Notice how i add another argument.

Quindi, c'è un modo per farlo, oltre a rendere il parametro un array. (Penso che non funzionerebbe in questo modo)

risposte:

2 per risposta № 1

Puoi usare argomenti variabili.

Essenzialmente

double average ( int num, ... )
{
va_list arguments;
double sum = 0;

va_start ( arguments, num );
for ( int x = 0; x < num; x++ )
sum += va_arg ( arguments, double );
va_end ( arguments );

return sum / num;
}

va_list è una struttura per contenere tutto ilargomenti passati, e va_start assegna gli argomenti a quell'elenco. va_end pulisce la lista dopo che è stata usata. E num è il numero di argomenti che vengono passati.

Controlla MSDN per maggiori informazioni.