偶尔我们需要设计一些函数,它们的参数数目不是固定的,这样我们需要用到可变参数列表。
可变参数列表是通过宏来实现的,定义于stdarg.h头文件。
具体内容在《C与指针》
1 #include <stdarg.h>
2 #include <stdio.h>
3
4 float average(int n_values, ... )
5 {
6 va_list var_arg; //用于访问参数列表的未确定部分,通过va_start来初始化
7 int count;
8 float sum = ;
9
/*
准备访问可变参数
*/
va_start( var_arg, n_values ); //第一个参数为va_list变量的名字,第二个参数为省略号前最后一个有名字的参数。初始化过程把va_list变量设置为指向可变参数的第一个参数
/*
添加取自可变参数列表的值
*/
for( count = ; count < n_values; count += )
{
sum += va_arg( var_arg, int ); //可变参数必须从头到尾顺序逐个访问。在va_arg中注意不可以指定错误的类型。
}
/*
完成处理可变参数
*/
va_end( var_arg );
return sum / n_values;
}
int main()
{
int a = average(, , , , , , , , , , );
printf("The average: %d\n", a);
return ;
}