3460

17 分钟

#C 语言标准库头文件 stdarg.h

这个头文件提供 函数的可变参数 的相关功能。

#示例

#include <stdio.h> #include <stdarg.h> #include <float.h> // 示例1:任意数量的浮点数求最大值 double max(int count, ...) { va_list args; // 声明一个 va_list 类型的变量 va_start(args, count); // 初始化 args,count 是最后一个固定参数 double max_value = DBL_MIN; // 保存最大值 for (int i = 0; i < count; i++) { double value = va_arg(args, double); // 获取下一个 double 类型的参数 if (value > max_value) { max_value = value; } } va_end(args); // 清理 args return max_value; } // 示例2:任意数量的浮点数求最小值 double min(int count, ...) { va_list args; // 声明一个 va_list 类型的变量 va_start(args, count); // 初始化 args,count 是最后一个固定参数 double min_value = DBL_MAX; // 保存最大值 for (int i = 0; i < count; i++) { double value = va_arg(args, double); // 获取下一个 double 类型的参数 if (value < min_value) { min_value = value; } } va_end(args); // 清理 args return min_value; } // 示例3:任意数量的浮点数求平均值 double average(int count, ...) { va_list args; // 声明一个 va_list 类型的变量 va_start(args, count); // 初始化 args,count 是最后一个固定参数 double sum = 0; // 保存和 for (int i = 0; i < count; i++) { sum += va_arg(args, double); // 获取下一个 double 类型的参数 } va_end(args); // 清理 args return sum / count; } int main(void) { printf("最大值为:%f\n", max(5, 20.0, 10.0, 30.0, 15.0, 8.0)); printf("最小值为:%f\n", min(5, 20.0, 10.0, 30.0, 15.0, 8.0)); printf("平均值值为:%f\n", average(5, 20.0, 10.0, 30.0, 15.0, 8.0)); return 0; }

运行结果:

最大值为:30.000000
最小值为:8.000000
平均值值为:16.600000

#类型

类型标准说明
va_listC89保存可变参数列表

#

标准说明
va_startC89初始化可变参数列表 va_list
va_argC89读取可变参数列表 va_list 的下一个参数
va_endC89清理可变参数列表 va_list
va_copyC99复制可变参数列表 va_list

#推荐阅读

创建于 2025/6/14

更新于 2025/6/30