国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > va_end 以获得更好的体验。

# C 语言标准库函数 va_end

在头文件 stdarg.h 中定义。
/*********************************************
 * @brief 清理可变参数列表
 * @param args 要清理的可变参数列表
 ********************************************/
void va_end(va_list args);

!subtitle:说明

清理被 va_startva_copy 函数初始化的可变参数列表。

  • 清理未被 va_startva_copy 函数初始化的参数列表是未定义行为

  • 函数返回前未清理被 va_startva_copy 函数初始化的参数列表是未定义行为

!subtitle:参数

  • args - 要清理的可变参数列表

!subtitle:返回值

# 示例

#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

# 推荐阅读

# 外部参考

# 参考标准

  • C11 standard (ISO/IEC 9899:2011):

    • 7.16.1.3 The va_end macro (p: 270-271)

  • C99 standard (ISO/IEC 9899:1999):

    • 7.15.1.3 The va_end macro (p: 250-251)

  • C89/C90 standard (ISO/IEC 9899:1990):

    • 4.8.1.3 The va_end macro

本文 更新于: 2025-11-27 09:38:11 创建于: 2025-11-27 09:38:11