知识点
- 变参函数的参数列表中,在
...
参数前必须有一个固定参数 - 头文件:
stdarg.h
- 示例:
//num为参数个数
void max(int num, ...)
{
int sum = 0;
unsigned char i;
va_list ap;
va_start(ap, num);
for(i = 0; i < num; i++)
{
sum += va_arg(ap,int);
}
printf("sum = %d\r\n",sum);
va_end(ap);
}
说明
va_list
:初始化一个变量用来保存可变参数,该类型为一个char指针
va_start(va_list arg_ptr, prev_param)
:初始化变参列表第一个可变参数-
arg_ptr
:要初始化的参数,本质是个char指针 -
prev_param
:...
前紧邻的一个固定参数,用来得到第一个变参函数表的地址
-
va_arg(va_list arg_ptr, type)
:取出当前指向的参数并指向下一个参数arg_ptr
:待引用的参数指针type
:需要引用的数据类型
va_end(va_list arg_ptr)
:清空va_list
指针