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


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

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

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

4   51  
2009-03-01 15:34:03

4 ответа:

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

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

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

Википедии функции vararg в C++.

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

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

должен быть способ указания конца списка. Это может быть сделано с помощью первого параметра, как Ion a printf(0 format string, или специальным Терминатором, нулем в примере выше.

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

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

один вы, вероятно, узнаете это printf.