07 函数

可变参数列表

c中的可变参数列表是通过宏来实现的。定义于stdarg.h中。包括了一个类型和三个宏

  • va_list:这个类型的变量用于访问参数列表中未确定的部分。

  • va_start:

  • va_arg

  • va_end

下面是一个使用的例子,分别输出3和3.5的浮点数

#include<stdio.h>
#include<stdarg.h>
float average (int n_values, ...);
int main ()
{
float res = average(5, 1,2,3,4,5);
printf("%f\n", res);
float res2 = average(6, 1,2,3,4,5,6);
printf("%f\n", res2);
return 0;
}
float average (int n_values, ... )
{
va_list var_arg;
int count;
float sum = 0;
/* 准备访问可变参数 */
va_start(var_arg, n_values);
for (count = 0; count < n_values; count++) {
sum += va_arg(var_arg, int);
}
/* 完成处理可变参数 */
va_end(var_arg);
return sum / n_values;
}