/ / виклики функції з різною кількістю аргументів [дублікат] - c ++, функція, параметри, аргументи

виклики функції з різною кількістю аргументів [дублікат] - c ++, функція, параметри, аргументи

Наприклад, функція, яка може приймати необмежену кількість (або, точніше, дуже велику кількість) суми аргументів одного типу, скажемо ціле число, а потім зробимо всі передані цілі числа значенням 5.

Що я запитую, чи можна, якщо я можу, зробити функцію з нефіксованою кількістю параметрів.

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

Потім щоразу називайте це різною кількістю аргументів

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

Отже, чи є спосіб зробити це, крім того, щоб зробити параметр масив. (Я думаю, він би не працював таким чином)

Відповіді:

2 для відповіді № 1

Ви можете використовувати змінні аргументи.

По суті

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 - це структура, яка може містити всіпередані аргументи, а va_start призначає аргументи до цього списку. va_end очищає список після його використання. І num - кількість аргументів, що передаються.

Перегляньте MSDN для отримання додаткової інформації.