天天看点

iOS可变参数定义以及调用

可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如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语句赋值的示例

继续阅读