http://www.cnblogs.com/zhanggaofeng/p/6434554.html
//可变参数 #include <stdio.h> #include <stdlib.h> #include <string.h> //引用头文件 #include <stdarg.h>/* va_list用于声明一个变量,我们知道函数的可变参数列表其实就是一个字符串,所以va_list才被声明为字符型指针, 这个类型用于声明一个指向参数列表的字符型指针变量,例如:va_list ap;//ap:arguement pointerva_start(ap,v),它的第一个参数是指向可变参数字符串的变量,第二个参数是可变参数函数的第一个参数, 通常用于指定可变参数列表中参数的个数。va_arg(ap,t),它的第一个参数指向可变参数字符串的变量,第二个参数是可变参数的类型。va_end(ap) 用于将存放可变参数字符串的变量清空(赋值为NULL). *///@num:参数个数 int add(int num, ...) {va_list v;//保存可以变长的参数列表va_start(v,num);//将形参num之后的所有参数保存到列表中int i = 0;for (i = 0; i < num; i++){int data = va_arg(v,int);//按照Int类型获取参数printf("%d\n",data);}//释放列表 va_end(v);return 0; }int run(int num, ...) {va_list v;va_start(v, num);int i = 0;for (i = 0; i < num; i++){char *data = va_arg(v, char *);printf("%s\n", data);}va_end(v);return 0; }void main() {add(3,1,2,3);run(3, "hello", "world", "!");system("pause"); }