我知道会有为每个函数的参数列表。我们的问题是
printf()函数也有参数列表和事件虽然我们给'n'no.of参数 printf()函数不会失败,然后
我想知道wht将用于printf()的参数列表部分,其中需要infinate参数列表?
我知道会有为每个函数的参数列表。我们的问题是
printf()函数也有参数列表和事件虽然我们给'n'no.of参数 printf()函数不会失败,然后
我想知道wht将用于printf()的参数列表部分,其中需要infinate参数列表?
的printf的签名看起来是这样的:
int printf (const char * format, ...);
如果一个函数有一个“...”作为其最后一个参数,它可以接收任意数量的参数。在该函数中,您可以使用va_arg来访问这些参数。下面是cplusplus.com一个例子:
/* va_start example */
#include <stdio.h>
#include <stdarg.h>
void PrintFloats (int amount, ...)
{
int i;
double val;
printf ("Floats passed: ");
va_list vl;
va_start(vl,amount);
for (i=0;i<amount;i++)
{
val=va_arg(vl,double);
printf ("\t%.2f",val);
}
va_end(vl);
printf ("\n");
}
int main()
{
PrintFloats (3,3.14159,2.71828,1.41421);
return 0;
}
注意的是,这里PrintFloats要求您的附加参数的数目传递。 printf不需要这样做,因为它可以通过计算格式字符串中的标记来推断您传入的参数数量。
的关键词是可变参数,并且它们与宣...
您打算完成这项工作吗?或者我们应该继续前进,并且因为它没有真正回答问题而令人信服。 –
它是完整的,请随时downvote。我认为网络上有很多关于可变参数的解释,并且在这里不需要重复 - 这就是为什么我保持我的答案简短的原因。 – thiton
-1如果用于发布“不完整”答案的参数是“网上提供的大量解释”,那么不应该麻烦回答。如果有人在意发布答案,那么最好是正确和完整的。 –
printf的是“可变参数”功能。这意味着参数列表最后声明为...
,并且在执行printf时,使用va_list
,va_start
,va_arg
等宏从可变长度列表中提取参数。
(另外,从技术上讲,参数列表并不是无限的 - 它受堆栈大小的限制。) – Vicky
谷歌“c可变数量的参数”,并签出'' –
-1 *研究努力*。 StackOverflow不是谷歌的机械土耳其人。如果你谷歌你的问题标题,你会得到答案。 –
在这里发布这个问题之前,你可以简单地用它搜索它! –