1、需要头文件
#include <stdarg.h>
2、函数定义
void logcmd(int arg0,...) void logcmd(char *arg0,...)3、解析
i、数字类型
void logcmd(int n,...) { va_list ap; int i = 0; va_start(ap,n);//使ap指向开始参数 for(;n;n--)//检索参数 printf("%d ",va_arg(ap,int)); va_end(ap);//释放参数 printf("\n"); }
其中n表示参数的个数,n之后才是真正的参数。调用如:logcmd(0); logcmd(1,9); logcmd(2,5,6);输出:9 5 6
当然,如果是int类型的参数,也可以不通过n来,比如我们实际用到的参数都是正数,这是可以在末尾多加一个负数,来实现:void logcmd(int arg0,...) { va_list ap; int i; va_start(ap,arg0);//使ap指向开始参数 for(i = arg0; i >= 0; i = va_arg(ap,int))//检索参数 printf("%d ",i); va_end(ap);//释放参数 printf("\n"); }调用:logcmd(3,1,2,-1);输出:3 1 2
ii、字符类型
void argsChar(int n,...) { va_list args; char *s; va_start(args,n); for(int i=0;i<n;i++){ s = va_arg(args,char*); printf("%s\n",s); } va_end(args); }
调用:argsChar(2,"hello","world");
输出:hello world