主要涉及函数
va_list ap 声明一个指针
va_start(ap,arg) 将ap指向到最后一个确定的参数arg
va_arg(ap,size) 将ap储存的地址加size,指向下一个参数
va_end(ap) 将ap赋值为NULL
va_list ap 声明一个指针
va_start(ap,arg) 将ap指向到最后一个确定的参数arg
va_arg(ap,size) 将ap储存的地址加size,指向下一个参数
va_end(ap) 将ap赋值为NULL
#include<stdarg.h>
#include<stdio.h>
int sum(int, ...);
int main(void)
{
printf("Sum of 10, 20 and 30 = %d\n", sum(3, 10, 20, 30) );
printf("Sum of 4, 20, 25 and 30 = %d\n", sum(4, 4, 20, 25, 30) );
return 0;
}
int sum(int num_args, ...)
{
int val = 0;
va_list ap; //指向参数的指针
int i;
va_start(ap, num_args); //将指针ap指向最后一个确定的参数
for(i = 0; i < num_args; i++)
{
val += va_arg(ap, int); //va_arg(),将指针ap指向可变参数的首地址
}
va_end(ap); //将指针ap赋值为NULL
return val;
}
运行结果:
10、20 和 30 的和 = 60
4、20、25 和 30 的和 = 79
10、20 和 30 的和 = 60
4、20、25 和 30 的和 = 79