本文最后更新于 621 天前,其中的信息可能已经有所发展或是发生改变。
函数
可变参数列表
stdarg.h中的stdarg宏实现可变参数列表,它是标准库的一部分。这个头文件声明类型 va_list 和三个宏 va_start\va_arg\va_end .
示例:
#include <stdarg.h>
float average(int n_values, ... )
{
va_list var_arg; //va_list 类型变量,用于访问参数列表的未确定部分
int count;
float sum = 0;
va_start(var_arg, n_values);
//使用 va_start 初始化 va_list 变量,第一个参数为 va_list 变量名
//第二个参数是省略号前最后一个有名字的参数
//初始化过程把 var_arg 变量设置为指向可变参数的部分的第一个参数
for(count = 0; count < n_values; count++)
{
sum += va_arg(var_arg, int);
//使用 va_arg 宏获取变量,第一个参数是 va_list 变量,第二个参数是参数列表下一个参数的类型
//本例中参数都是 int 类型
//某些函数中,需要通过前面获得的数据来判断下一个参数的类型(如 printf())
//va_arg 返回这个参数的值, 并使 var_arg 指向下一个可变参数
}
va_end(var_arg);
//访问完最后一个可变参数后,需要调用va_end
return sum / n_values;
}