Sloppy's Blog

c可变参数使用

在C语言编程中有时会遇到一些参数个数可变的函数,例如printf(),scanf()函数,其函数原型为:
int printf(const char format,…),int scanf(const char format,…);
它除了有一个参数format固定以外,后面跟着的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf(“%d”,i); printf(“%d,%c”,i,j);

下面可以自己实现一个可变参数的实例:

1
2
3
4
5
6
7
8
9
10
11
12
void HelloWorld::testParam(int mode, ...) {
va_list ap;
va_start(ap, mode);
int arg;
while(true){
arg = va_arg(ap, int);
if (arg == -1)
break;
CCLOG("mode:%d", arg);
}
va_end(ap);
}