可变参数函数
参数数量可变的函数被称为可变参数函数(variable function)
宏
可以把宏想象成一种特殊类型的函数,它可以修改源代码>
案例
void print_ints(int args,...){ //从args参数开始后面都是可变参数
va_list ap;
va_start(ap,args); //宏 表示参数从哪里开始
int i;
for(i=0;i<args;i++){ //args中保存了变量的数目
printf("argument:%i\n",va_arg(ap,int));
}
va_end(ap);
}
流程
包含头文件stdarg.h
所有处理可变参数的代码都在stdarg.h中
告诉函数还有更多的参数…
在C语言中,函数参数后面的省略号"…"表示还有更多参数
创建va_list
va_list用来保存传给函数的其他参数
说明可变参数从哪里开始
需要把最后一个普通参数名字告诉C,在这个例子中就是args变量
然后逐一读取可变参数
参数现在全保存在v a _ l i s t中,可以用v a _ a r g 读取它们。va_arg接收两个值:va_list和要读取参数的类型,本例中所有参数都是int。
最后销毁va_list
要用va_end宏告诉C你做完了
调用函数
print_ints(3,56,34,78);
第一个参数是要打印的个数
打印结果为
argument:56
argument:34
argument:78