Вопрос о определении функции (три точки в параметрах..)
Я столкнулся с определением функции:
char* abc(char *f, ...)
{
}
Что означают три точки?
Ответ 1
Эллипсы означают, что существует следующее количество аргументов. Место, в котором вы их использовали (возможно, не осознавая), - это семейство функций printf.
Они позволяют создавать функции этого стиля, где параметры не известны заранее, и вы можете использовать функции varargs (va_start, va_arg и va_end), чтобы получить конкретные аргументы.
Эта ссылка здесь содержит хороший трактат о printf использовании списков переменных аргументов.
Они называются elipsis, и они означают, что функция может принимать неопределенное количество параметров. Вероятно, ваша функция может быть вызвана следующим образом:
abc( "foo", 0 );
abc( "foo", "bar", 0 );
Должен быть указатель конца списка. Это можно сделать, используя первый параметр, в качестве иона printf (строка формата 0 или специальный ограничитель, нуль в приведенном выше примере.
Функции с переменным числом параметров считаются плохой формой в С++, так как никакие проверки типов или пользовательские преобразования не могут выполняться по параметрам.
Ответ 4
Это то, что называется функцией varargs или переменной переменной в C.