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