在C语言中,处理可变参数(Variable Arguments)主要依赖于 <stdarg.h>
头文件中的一组宏定义。
以下是详细讲解和示例:
声明可变参数函数:使用 ...
表示可变参数
访问参数:通过 va_list
类型和配套宏遍历参数
关键宏定义
宏/类型
作用
va_list
定义参数列表的指针类型(用于存储可变参数信息)
va_start()
初始化
va_list
,使其指向第一个可变参数通过最后一个固定参数的地址计算可变参数起始位置
va_arg()
获取当前参数的值,并将指针移动到下一个参数
va_arg
根据类型大小移动指针
va_end()
清理
va_list
相关资源(必须调用)可变参数函数必须至少有一个固定参数(用于确定可变参数信息)
示例:
int sum(int count, ...) {va_list args; // 1. 声明参数列表va_start(args, count); // 2. 初始化,定位到第一个可变参数int total = 0;for(int i = 0; i < count; i++) {int num = va_arg(args, int); // 3. 按指定类型获取当前参数total += num;}va_end(args); // 4. 必须清理资源return total; }