C语言可变参数

#include <stdio.h>
#include <stdarg.h>
 
//求narg个整数的和
int sum(int narg, ...)
{
        va_list ap;  //首先定义一个va_list类型的变量
        va_start(ap, narg);  //va_start 的第一个参数为va_list变量,第二个参数为函数的最后一个固定参数
        int s = 0, i, tmp;
 
        for(i = 0; i < narg; i++)
        {
                tmp = va_arg(ap, int);  // 每次调用迭代出一个可变参数值, 该函数的第二个参数要求指明变量的类型
                s += tmp;
        }
 
        va_end(ap);  //用va_end结束迭代, ap is undefined
 
        return s;
}
 
int main(void)
{
        printf("1+2 = %d ", sum(2, 1,2));
        printf("1+...+5 = %d ", sum(5, 1,2,3,4,5));
        printf("1+...+10 = %d ", sum(10, 1,2,3,4,5,6,7,8,9,10));
        return 0;
}

执行结果:

1+2 = 3
1+...+5 = 15
1+...+10 = 55

//将buffer缓存区加入数据

 

转至于《https://blog.csdn.net/zhang197093/article/details/76400380》

原文地址:https://www.cnblogs.com/tiange-137/p/14376832.html