函数参数个数不确定时使用va_start
今天在网上看程序时忽然发现别人的函数参数中有省略号,甚是吃惊,发现其函数中使用了va_start,经过查资料大概明白其用法,个人觉得很好用!
#include <stdio.h>
#include <stdarg.h>
int fun(int a, int b, ...)
{
int sum = 0;
int para1; //参数类型要与调用时的相同
int para2;
va_list va; //定义一个字符指针
va_start(va, b); //将va指向参数b后第一个参数
para1 = va_arg(va, int); //读取b后面的第一个参数
para2 = va_arg(va, int); //读取b后面的第二个参数
va_end(va); //清空va
sum = a + b + para1 + para2;
return sum;
}
void main(void)
{
int sum = 0;
sum = fun(1, 2, 3, 4);
printf("sum = %d\n", sum);
return 0;
}

浙公网安备 33010602011771号