约 1975 字

约 10 分钟

#C 语言标准库函数 va_arg

/*********************************************
 * @brief 从可变参数列表中读取下一个参数
 * @param args 要读取的可变参数列表
 * @param T 要读取参数的类型
 ********************************************/
T va_arg(va_list args, T);

说明

从可变参数列表 args 中读取下一个参数。

参数

  • args - 要读取的可变参数列表
  • T - 要读取参数的类型

返回值

  • 返回下一个参数

#示例

#include <stdio.h> 
#include <stdarg.h> 

// 求和函数
int sum(int count, ...)
{
    // 创建并初始化可变参数列表
    va_list args;
    va_start(args, count);

    int result = 0;
    for (int i = 0; i < count; i+=1)
    {
        result += va_arg(args, int); // 读取下一个可变参数
    }

    va_end(args); // 清理可变参数列表
    return result;
}

int main(void)
{
    printf("%d\n", sum(9, 1, 2, 3, 4, 5, 6, 7, 8, 9));
    return 0;
}

运行结果:

45

#推荐阅读

#外部参考

#参考标准

  • C23 standard (ISO/IEC 9899:2024):
    • 7.16.2.2 The va_arg macro (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
    • 7.16.1.1 The va_arg macro (p: TBD)
  • C11 standard (ISO/IEC 9899:2011):
    • 7.16.1.1 The va_arg macro (p: 269-270)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.15.1.1 The va_arg macro (p: 249-250)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • 4.8.1.2 The va_arg macro

更新: 2025/10/25

作者: PlanC

创建: 2025/10/18