Наприклад, функція, яка може приймати необмежену кількість (або, точніше, дуже велику кількість) суми аргументів одного типу, скажемо ціле число, а потім зробимо всі передані цілі числа значенням 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 для отримання додаткової інформації.