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));
}