考虑printf:
int printf ( const char * format, ... );
用于描述...
的术语和使用它的函数有哪些?我一直称它为省略号,但这就像调用&
“&符号运算符”。
答案 0 :(得分:19)
答案 1 :(得分:14)
省略号(,...)p202“K + R C编程语言”
答案 2 :(得分:8)
printf
和其他类似函数通常称为“可变函数”。
注意:即将推出的C ++ 0x Standard提供了两种不同的方式来声明和实现可变参数函数(va_arg
方式和模板方式)。但两者都涉及省略号令牌。
答案 3 :(得分:4)
省略号算子是我听过的唯一一个词 - 很少(谢天谢地)你不需要别的东西!
答案 4 :(得分:2)
This C++ draft specification简称为“省略号”,有时会带有明确或不确定的文章,如“省略号”或“省略号强>”。
5.2.2“函数调用”第6节包含:
可以声明一个函数接受较少的参数(通过声明 默认参数(8.3.6))或更多参数(使用省略号,... 8.3.5) 比函数定义中的参数数量(8.4)。
8.3.5“功能”第2节包含:
如果是parameter-declaration-clause 终止于省略号, 参数的数量应等于 或大于 没有默认值的参数 参数。
8.3.6第4节包含示例代码:
void g(int = 0, ...); // OK, ellipsis is not a parameter so it can follow
// a parameter with a default argument
额外迂腐:第13.3.3.1.3节(“省略号转换序列”)是指“省略号参数规范”。但是,如上面的示例代码所述,严格来说,省略号不是参数。 8.3.5第1节解释说,虽然省略号出现在参数声明子句中,但它遵循参数声明列表。
答案 5 :(得分:2)
除了“省略号”和“可变函数”之外,人们还会看到“vararg”和“varargs”这两个词。这似乎是“变量参数列表”的缩写,由(LEGACY)标题<varargs.h>
in POSIX周围的语言判断。
此外,不使用术语“&符号运算符”的主要原因是&符号可以表示两个不同的运算符中的任何一个,具体取决于上下文,这将使术语含糊不清。省略号不会出现这种情况;没有分配给它的其他含义,因此对于令牌“...
”使用术语“省略号”是不就像使用术语“&符号运算符”作为令牌“{{1 }}”。
答案 6 :(得分:1)
答案 7 :(得分:1)
马丁和德米安都是对的: