Функции с ...
в качестве последнего параметра называются функциями Variadic (Cppreference. 2016). Это ...
используется для разрешения параметров переменной длины с неопределенными типами.
Мы можем использовать переменные функции, когда не уверены в количестве параметров или их типах.
Пример функции переменной:
Предположим, нам нужна функция суммы, которая будет возвращать суммирование переменного числа аргументов. Мы можем использовать функцию с переменным числом здесь.
#include <stdio.h>
#include <stdarg.h>
int sum(int count, ...)
{
int total, i, temp;
total = 0;
va_list args;
va_start(args, count);
for(i=0; i<count; i++)
{
temp = va_arg(args, int);
total += temp;
}
va_end(args);
return total;
}
int main()
{
int numbers[3] = {5, 10, 15};
// Get summation of all variables of the array
int sum_of_numbers = sum(3, numbers[0], numbers[1], numbers[2]);
printf("Sum of the array %d\n", sum_of_numbers);
// Get summation of last two numbers of the array
int partial_sum_of_numbers = sum(2, numbers[1], numbers[2]);
printf("Sum of the last two numbers of the array %d\n", partial_sum_of_numbers);
return 0;
}
Выход:
Практическая задача: Простую проблему для практики вариадной функции можно найти в Хакерранкской задаче здесь
Ссылка: