C语言 可变参数
有时,当您想要一个函数时,可能会遇到一种情况,该函数可以采用可变数量的参数,而不是预定义数量的参数。
C编程语言为这种情况提供了一种解决方案,并且您可以根据自己的要求定义一个可以接受可变数量参数的函数。以下示例显示了此类函数的定义。
int func(int, ... ) {
.
.
.
}
int main() {
func(1, 2, 3);
func(1, 2, 3, 4);
}
应该注意的是,函数 func()的最后一个参数为椭圆,即三个点( … ),而椭圆之前的那个始终是 int ,它表示传递的变量参数总数。
示例下一个简单的函数,该函数可以获取可变数量的参数并返回其平均值-
#include <stdio.h>
#include <stdarg.h>
double average(int num,...) {
va_list valist;
double sum=0.0;
int i;
/* initialize valist for num number of arguments */
va_start(valist, num);
/* access all the arguments assigned to valist */
for (i=0; i < num; i++) {
sum += va_arg(valist, int);
}
/* clean memory reserved for 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));
}
编译并执行上述代码后,将产生以下输出。应当注意,函数 average()已被调用两次,并且每次第一个参数代表要传递的可变参数的总数。
Average of 2, 3, 4, 5=3.500000
Average of 5, 10, 15=10.000000