函数参数个数不确定时使用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;
}


 


 

posted @ 2016-07-06 16:58  LeeAaron  阅读(639)  评论(0编辑  收藏  举报