可变参数列表

Tags
库函数
Text
stdarg.h
C 语言支持可变参数列表,例如 printf 在第一个模板字符串之后,可以跟上任意个参数。
要实现可变参数列表的函数,需要使用 stdargs.h 头文件。
 
以下为一个实例:
#include <stdio.h> #include <stdarg.h> double average(int num,...) { va_list valist; double sum = 0.0; int i; /* 为 num 个参数初始化 valist */ va_start(valist, num); /* 访问所有赋给 valist 的参数 */ for (i = 0; i < num; i++) { sum += va_arg(valist, int); } /* 清理为 valist 保留的内存 */ va_end(valist); return sum/num; } int main() { printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5)); printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15)); }
 
可变长参数列表的参数个数不能直接获取,虽然有时候可以通过对 NULL 的判断来决定,但有时候参数本身也是可以传 NULL 的话就不行了,所以一般可以像上面的方法,用参数1来确定参数的个数。