关于函数定义的问题(参数中的三个点......)

时间:2009-03-01 12:34:03

标签: c++ c

我遇到了一个函数定义:

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

这三个点是什么意思?

4 个答案:

答案 0 :(得分:41)

省略号表示后面有可变数量的参数。您将使用它们的地方(可能没有意识到)是printf函数族。

它们允许您创建事先不知道参数的样式的函数,并且您可以使用varargs函数(va_startva_argva_end)来获取具体论据。

此链接hereprintf使用变量参数列表有很好的论述。

答案 1 :(得分:15)

维基百科vararg functions in C++

答案 2 :(得分:11)

它们被称为省略号,它们意味着该函数可以采用不确定数量的参数。您的函数可能会像这样调用:

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

需要有一种方法来指示列表的结尾。这可以通过使用第一个参数来完成,如printf(0格式字符串),或特殊终结符,上例中为零。

具有可变数量参数的函数在C ++中被视为错误形式,因为不能对参数执行类型检查或用户定义的转换。

答案 3 :(得分:4)

这就是所谓的varargs函数或C中的变量参数函数。

你可能认识到的是printf。