C语言可变参数可以使用宏函数取出,宏函数在头文件stdarg.h中。
贴出如下简单的代码,博客转载自: https://www.cnblogs.com/edver/p/8419807.html
亦可参考:https://www.cnblogs.com/ThatsMyTiger/p/6924462.html
int simple(int num,...)
{
int i, result=0;
va_list vl; //va_list指针,用于va_start取可变参数,为char*
va_start(vl,num); //取得可变参数列表中的第一个值
printf("num:%d, vl:%d\n",num,*vl);
for (i = 0; i < (num-1); i++)//这里num表示可变参数列表中有多少个参数
{
result = va_arg(vl, int);//这里把vl往后跳过4个字节(sizeof(int)大小)指向下一个参数,返回的是当前参数(而非下
一个参数)
printf("in for result:%d, *vl:%d\n", result, *vl);//这里打印下,可以看出,vl总是指向result后面的那个参数
}
va_end(vl);//结束标志
return result;
}
int main(int argc, char **argv)
{
int num = argc;
int i = 0;
simple(5,1,2,3,4,5);
return 1;
}