函数参数个数不确定时使用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号
浙公网安备 33010602011771号