可變長參數:顧名思義,就是函數的參數長度(數量)是可變的。比如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語句指派的示例