在这里,我找到了一个示例,说明如何在C中使用varargs。
#include <stdarg.h>
double average(int count, ...)
{
va_list ap;
int j;
double tot = 0;
va_start(ap, count); //Requires the last fixed parameter (to get the address)
for(j=0; j<count; j++)
tot+=va_arg(ap, double); //Requires the type to cast to. Increments ap to the next argument.
va_end(ap);
return tot/count;
}
我只能在某种程度上理解此示例。
我不清楚我们为什么使用va_start(ap, count);。据我了解,通过这种方式,我们将迭代器设置为其第一个元素。但是,为什么默认情况下不将其设置为开头?
我不清楚为什么我们需要给出count一个论据。C不能自动确定参数的数量吗?
我不清楚我们为什么使用va_end(ap)。它会发生什么变化?是否将迭代器设置为列表的末尾?但是不是通过循环将其设置为列表的末尾吗?而且,为什么我们需要它?我们不再使用ap;我们为什么要更改它?
万千封印
慕容3067478
相关分类