C语言可变参数
C 语言中最常用的可变参数函数例子是 printf()和 scanf()。
使用可变参数需要包含头文件**<stdarg.h>**,头文件里定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。
变量&宏 | 描述 |
---|---|
va_list | typedef char va_list* |
void va_start(va_list ap, last_arg) | 初始化可变参数列表 |
type va_arg(va_list ap, type) | 获取可变参数列表中的下一个参数 |
void va_end(va_list ap) | 结束可变参数列表的访问 |
下面是一个示例
int sum(int num,...)
{
va_list valist;
int sum = 0;
int i;
va_start(valist, num); /* 初始化可变参数列表,从最后一个固定参数num后的信息传入valist */
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);/* 访问所有赋给 valist 的参数 */
}
va_end(valist); /* 清理为 valist 保留的内存 */
return sum;
}