Описание тега variadic-functions

Функция является переменной, если она может принимать переменное количество аргументов; то есть его арность не фиксирована. Аббревиатура "varargs" обычно используется для обозначения этих типов функций.

Функции с переменным числом аргументов - это функции, которые принимают переменное количество аргументов, например, функцию, которая может быть вызвана с 1 или 2 аргументами.

Большинство языков высокого уровня поддерживают вариативные функции в собственно синтаксисе языка. Некоторые из этих языков не требуют дополнительного синтаксиса (например, JavaScript, Perl и PHP). Обычно они обращаются к переменным аргументам через какую-то переменную по умолчанию (Perl использует_@).

Большинство компилируемых языков (например, D, Java, C# и VB.NET) и даже некоторые интерпретируемые языки (например, Python, CoffeeScript, Ruby и Scheme) требуют явного синтаксиса для использования вариативных функций. Обычно они "сворачивают" все лишние аргументы в специально отмеченный аргумент, к которому можно получить доступ как к массиву (Python использует*args синтаксис, где *args это tuple объект).

Вариативные функции C и C++ используют стандартную библиотеку (<stdarg.h>, C++ альтернативно <cstdarg>).
Они используютva_*функции для распаковки и доступа к переменному количеству аргументов. Увидеть man stdarg или раздел 2.10 ANSI для получения дополнительной информации об этих функциях.