C語言允許使用可變參數列表,我們常用的printf函數即為可變參數函數,C標准庫提供了stdarg.h為我們提供了這方面支持;該頭文件提供了一些類型和宏來支持可變參數列表,包括類型va_list,宏va_start、va_arg、va_end;
可變函數參數定義方法:
#include <stdarg.h>
void func(int count,...){
va_list ap;
int ix, tmp;
va_start(ap, a);
for(ix=0;ix < count; ++ix){
tmp = va_arg(ap, int);
//process the param
}
va_end(ap);
}
函數的第一個參數count是必不可少的,即你定義的可變參數列表函數至少要有一個參數;
va_list:一般會定義為char *;
va_start(va_list ap, paramN):初始化ap的值,指向第一個可變參數
va_arg(va_list ap, TYPE):將根據TYPE從ap指向出獲得實際的值,並移動ap指針
va_end: 一般什麼都不做