C语言可变参数 #

一、可变参数概述 #

1.1 什么是可变参数 #

函数可以接受不定数量的参数,如printf。

1.2 必需头文件 #

c
#include <stdarg.h>

二、可变参数宏 #

2.1 宏列表 #

说明
va_list 参数列表类型
va_start 初始化参数列表
va_arg 获取下一个参数
va_end 清理参数列表

2.2 使用示例 #

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

int sum(int count, ...) {
    va_list args;
    va_start(args, count);
    
    int total = 0;
    for (int i = 0; i < count; i++) {
        total += va_arg(args, int);
    }
    
    va_end(args);
    return total;
}

int main() {
    printf("sum(3, 1,2,3) = %d\n", sum(3, 1, 2, 3));
    printf("sum(5, 1,2,3,4,5) = %d\n", sum(5, 1, 2, 3, 4, 5));
    return 0;
}

三、实现printf风格函数 #

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

void my_printf(const char* format, ...) {
    va_list args;
    va_start(args, format);
    vprintf(format, args);
    va_end(args);
}

int main() {
    my_printf("Hello %s, age %d\n", "Alice", 20);
    return 0;
}

四、总结 #

步骤 操作
1 定义va_list
2 va_start初始化
3 va_arg获取参数
4 va_end清理

下一步,让我们学习错误处理!

最后更新:2026-03-26