C 标准库 - <stdarg.h>

C 语言宏 va_end 用于清理可变参数列表,处理完所有参数后必须调用。

定义

void va_end(va_list ap);

va_end 是 <stdarg.h> 中的宏,清理 va_list,处理完可变参数后必须调用。

用法

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

int avg(int n, ...) {
    va_list args;
    va_start(args, n);
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += va_arg(args, int);
    va_end(args);   // 清理
    return sum / n;
}

int main() {
    printf("avg = %d\n", avg(3, 90, 80, 70));
    return 0;
}

输出:

avg = 80

注意事项

va_end 与 va_start 配对,即使中途 return 也要先调用,保证资源正确释放。