#include <stdio.h>
#include <stdarg.h>
// 可变参数函数,计算平均值
double average(int count, ...) {
va_list args;
va_start(args, count);
double sum = 0.0;
for (int i = 0; i < count; ++i) {
sum += va_arg(args, double);
}
va_end(args);
return sum / count;
}
int main() {
// 调用可变参数函数
double result1 = average(3, 2.0, 4.0, 6.0);
double result2 = average(5, 10.0, 20.0, 30.0, 40.0, 50.0);
// 输出结果
printf("Average 1: %.2f\n", result1);
printf("Average 2: %.2f\n", result2);
return 0;
}
在上述例子中,average 函数接受一个整数参数 count 表示可变参数的数量,后续的参数通过 ... 表示。使用 va_list 类型的变量 args 来处理可变参数。va_start 宏初始化 args,va_arg 宏用于获取可变参数的值,而 va_end 宏用于清理工作。
需要注意的是,可变参数函数对于传递给它的参数没有提供类型检查。因此,确保在使用时传递正确类型和数量的参数非常重要。
此外,C99 标准引入了 <stdargs.h> 头文件中的 <stdarg.h> 头文件的替代,可以使用 <stdarg.h> 替代来提高可移植性。
转载请注明出处:http://www.pingtaimeng.com/article/detail/3194/C语言