C语言可变参数
C语言中,可变参数是指函数的参数个数不确定,可以根据试剂情况传递不同个数的参数。可变参数的函数必须至少要有一个确定的参数,这个确定的参数是可变参数的前一个参数,通常是一个整形。C语言中,可变参数的实现是通过stdarg.h头文件中的宏和函数来实现的。常用的宏有va_list、va_start、va_arg和va_end。其中,va_list是一个指向参数列表的指针,va_start用于初始化参数列表指针,va_arg用于获取参数列表中的参数,va_end用于结束参数获取。
#define PRINT_DEBUG(fmt,args...) do{if(a>b){printf(fmt,##args);}}while(0)
args是可变参数的意思
例如
#include <stdarg.h> #include <stdio.h> double average(int num, ...) { va_list valist; double sum = 0.0; int i; /* 为 num 个参数初始化 valist */ va_start(valist, num); /* 访问所有赋给 valist 的参数 */ for (i = 0; i < num; i++) { sum += va_arg(valist, int); } /* 清理为 valist 保留的内存 */ va_end(valist); return sum / num; } int main() { printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2, 3, 4, 5)); printf("Average of 5, 10, 15 = %f\n", average(3, 5, 10, 15)); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具