====== stdarg.h ====== Для определения параметров неопределенной длины в таких функциях используется многоточие: ''тип имя_функции(обязательные параметры, ...)'' При этом надо учитывать, что функция должна иметь как минимум один обязательный параметр. в заглоловочном файле ''stdarg.h'' определены специальные макрокоманды: va_start(); va_arg(); va_end(); Макрос ''va_start'' имеет следующее определение: void va_start(va_list param, последний_явный_параметр); Первый параметр макроса - param связывает объект va_list с первым необязательным параметром. Для его определения в качестве второго параметра в макрос передается последний обязательный параметр функции. Таким образом, используя последний обязательный параметр, мы можем нацелить объект va_list на адрес первого необязательного параметра. То есть фактически va_list выступает в данной роли как указатель. Макрос ''va_arg'' имеет следующее определение: type va_arg(va_list param, type); Этот макрос позволяет получить значение параметра типа type, а также переместить указатель va_list на следующий необязательный параметр. Макрос ''va_end'' позволяет выйти из функции с переменным списком параметров. Она имеет следующее определение: void va_end(va_list param); В качестве параметра va_end принимает указатель va_start, который ранее был задействован в макросах va_start и va_arg. Пример: #include #include int sum(int n, ...) { int result = 0; va_list factor; //указатель va_list va_start(factor, n); // устанавливаем указатель for(int i=0;i