C 可变参数

参考链接:https://www.runoob.com/cprogramming/c-variable-arguments.html
怎样让函数接受不同个数的参数呢,可以通过stdarg.h头文件提供的函数和宏来实现。此头文件提供了实现可变参数功能相关的函数和宏。

可变参数的形式

//定义
int func(int num ,...){//真真的就是这样定义的,就是有省略号,前面除了表示接受个数的num外,还可以自定义其他参数
……
}
//使用
result=func(2,a1,a2);//在使用这个函数的时候,第一个值必须时int类型,代表这次传递参数的个数

过程

#include <stdio.h>
#include <stdarg.h>

int add(int num ,...){
    //在函数中定义一个va_list类型变量,该类型是由stdarg.h头文件中定义的
    va_list valist;
    int result =0;
    //使用 add()中的int 参数和va_start宏来初始化va_list类型变量为一个参数列表,宏va_start是一个定义在stdarg.h中的函数
    va_start(valist,num);//初始化后会把所有接收到的可变参数都放在了valist中
    //使用va_arg宏和va_list类型变量来访问参数列表中每一个项
    int i;
    for(i=0;i<num;i++){
        result+=va_arg(valist,int);//i并不参与
    }
    //当对可变参数的访问结束后,使用va_end来清理赋予va_list类型变量的内存
    va_end(valist);
    return result;
}
int  main(){
    //使用
   printf("结果是:%d",add(2,10,10));
   printf("结果是:%d",add(3,10,10,10));

}
原文地址:https://www.cnblogs.com/Gaoqiking/p/11735410.html