Подтвердить что ты не робот

Вопрос о определении функции (три точки в параметрах..)

Я столкнулся с определением функции:

char* abc(char *f, ...)
{
}

Что означают три точки?

4b9b3361

Ответ 1

Эллипсы означают, что существует следующее количество аргументов. Место, в котором вы их использовали (возможно, не осознавая), - это семейство функций printf.

Они позволяют создавать функции этого стиля, где параметры не известны заранее, и вы можете использовать функции varargs (va_start, va_arg и va_end), чтобы получить конкретные аргументы.

Эта ссылка здесь содержит хороший трактат о printf использовании списков переменных аргументов.

Ответ 3

Они называются elipsis, и они означают, что функция может принимать неопределенное количество параметров. Вероятно, ваша функция может быть вызвана следующим образом:

abc( "foo", 0 );
abc( "foo", "bar", 0 );

Должен быть указатель конца списка. Это можно сделать, используя первый параметр, в качестве иона printf (строка формата 0 или специальный ограничитель, нуль в приведенном выше примере.

Функции с переменным числом параметров считаются плохой формой в С++, так как никакие проверки типов или пользовательские преобразования не могут выполняться по параметрам.

Ответ 4

Это то, что называется функцией varargs или переменной переменной в C.

То, что вы, вероятно, узнаете, это printf.