使用可变参数,需要添加 < stdarg.h >。
实现可变参数的方法就是把函数的第一个参数设为后续可变参数的个数。然后使用
va_list , va_start , va_arg , va_end等宏函数对可变参数进行操作。
###步骤
- va_list(arg) //声明一个va_list变量arg
- va_start(arg,x) //x为第一个确定的参数,va_start(arg, x)使arg指向可变参数的第一个参数。
- va_arg(arg,type)//type为每个可变参数的数据类型,va_arg(arg,type)读出第一个可变参数,且指针指向下一个可变参数
- va_end(arg) //等同于令arg为NULL,防止arg变成野指针
###可变参数的限制
注意:
- 可变参数必须从头到尾逐个访问。如果你在访问了⼏个可变参数之后想半途终⽌,这是可以
的,但是,如果你想⼀开始就访问参数列表中间的参数,那是不⾏的。
参数列表中⾄少有⼀个命名参数。如果连⼀个命名参数都没有,就⽆法使⽤va_start。
这些宏是⽆法直接判断实际存在参数的数量。
这些宏⽆法判断每个参数的是类型。
如果在va_arg中指定了错误的类型,那么其后果是不可预测的。
1万+

被折叠的 条评论
为什么被折叠?



