C 可变参数(Variable Arguments)
C 通过 <stdarg.h> 提供可变参数机制,典型应用是 printf 家族。应谨慎使用,确保类型与数量一致。
1. 基本用法
2. 规则与限制
- 需要一个固定参数作为锚点(如
count) - 只能按正确类型与顺序读取,否则未定义行为
- 浮点默认提升:
float作为参数传递时提升为double - 小整数提升:
char/short提升为int
3. 示例:最小 printf
4. 安全建议
- 尽量使用带类型检查的变体(如 C11
_Generic或函数重载替代方案) - 设计清晰的格式/协议,避免类型不匹配
5. 小结
可变参数强大但脆弱,使用时要严格遵循类型规则并做好输入约束与文档说明。