我遇到了一个函数定义,例如:
char* abc(char *f, ...)
{
}
三个点是什么意思?
原文由 ashishsony 发布,翻译遵循 CC BY-SA 4.0 许可协议
我遇到了一个函数定义,例如:
char* abc(char *f, ...)
{
}
三个点是什么意思?
原文由 ashishsony 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
这些类型的函数称为 _可变参数函数_( 维基百科链接)。他们使用省略号(即三个点)来表示函数可以处理的参数数量不定。您可能使用过此类功能的一个地方(可能没有意识到)是使用各种
printf
功能,例如(来自 ISO 标准):The ellipses allow you to create functions where the number of parameters are not known beforehand, and you can use
stdargs.h
functions (va_start
,va_arg
andva_end
) 来获取具体的论点。你必须知道你提取的参数的 _类型_,并且有一些方法来决定你什么时候完成。
printf
函数使用格式字符串(对于类型和计数)执行此操作,而我下面的示例代码始终假定const char *
作为具有标记值的类型NULL
决定完成。这里 的这个链接有一篇关于在
printf
中使用变量参数列表的很好的论文。例如,以下程序包含一个函数
outStrings()
,它允许您打印任意数量的字符串: