va_list是在C语言中解决可变参数问题的一组宏,在头文件<stdarg.h>下。
va_list的用法:
1、首先在函数里定义一个va_list型的valist变量,这个变量是指向参数的指针。
2、然后用va_start初始化valist变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。
3、然后用va_arg返回可变的参数,va_arg的第二个参数是需要返回的参数的类型。
4、最后用va_end结束可变参数的获取。
#include <stdio.h> #include <stdlib.h> #include <stdarg.h> // 函数声明 int sum_more(int num, ...); int main() { int k; // 计算num个数字的和, k = sum_more(3, 3, 4, 5); printf("k = %d", k); return 0; } // 加法 int sum_more(int num, ...) { va_list valist; int i; int total = 0; // 为 num 个参数初始化 valist va_start(valist, num); // 访问所有赋给 valist 的参数 for (i = 0; i < num; i++) { total += va_arg(valist, int); } // 清理为 valist 保留的内存 va_end(valist); return total; }