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