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