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之后才是真正的参数。调用如:
- 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("
");
- }
调用:
- 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
",s);
- }
- va_end(args);
- }
调用:
- argsChar(2,"hello","world");
输出:
- hello
- world