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)); }