我知道每个函数都会有一个参数列表。 如果我们传递的参数多于参数列表中提到的变量no.of 它给出了一个错误。但我的问题是
Printf()函数也有参数列表和event,尽管我们给出'n'no.of参数 printf()函数不会失败
我想知道wht将在printf()的参数列表部分中使用,该部分采用infinate参数列表?
答案 0 :(得分:5)
printf是一个“可变参数”函数。这意味着参数列表最后用...
声明,并且在printf的实现中,va_list
,va_start
,va_arg
等宏用于提取参数来自可变长度列表。
答案 1 :(得分:4)
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不需要这样做,因为它可以通过计算格式字符串中的标记来推断传入的参数数量。
答案 2 :(得分:-3)
关键字是可变参数,它们用...
声明