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: 一般什麼都不做