可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如c语言的printf系列的(格式化输入输出等)函数,都是参数可变的。下面是printf函数的声明:
int printf(const char *format, …);
可变参数函数声明方式都是类似的
<a></a>
objc中没有提供直接的变长参数方法,需要使用c标准库中得av_list方法,使用简单:
c语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(va_list)实现的。
具体的参数含义为:
va_list : 定义一个指向个数可变的参数列表指针,存储参数的类型信息。
void va_start(va_list ap, paramn) :
参数:
ap: 可变参数列表地址
paramn: 确定的参数
功能:初始化可变参数列表(把函数在paramn之后的参数地址放到ap中)。
void va_end(va_list ap) :
功能: 关闭初始化列表(将ap置空)
type va_arg(va_list ap, type) :
功能: 返回下一个参数的值
类似格式化输出的示例
调用这个方法以及输出的结果为:
类似sql语句赋值的示例