顾名思义,可变参数函数就是参数数量可变的函数,即函数的参数数量是不确定的,比如方法getnumbertotal()我们即可以传递一个参数,也可以传递5个、6个参数
1 #include <stdio.h> 2 #include <stdarg.h>//实现可变参数需要的头文件 3 4 int getnumbertotal(int args,...){//可变参数要放在普通参数(args)的后面;...表示有很多个参数 5 va_list l;//用来保存传给函数的其他参数 6 va_start(l,args);//表示可变参数的开始,即args参数之后的所有参数 7 int i; 8 int total=0; 9 //逐一读取可变参数 10 for(i=0;i<args;i++){ 11 total+=va_arg(l,int); 12 } 13 va_end(l);//销毁va_list 14 return total; 15 } 16 17 int main(){ 18 int result=getnumbertotal(3,11,15,9); 19 printf("total:%i\n",result); 20 result=getnumbertotal(2,11,9); 21 printf("total:%i\n",result); 22 result=getnumbertotal(5,11,9,5,13,7); 23 printf("total:%i\n",result); 24 return 0; 25 }
使用可变参数必须注意的是: 必须包含一个普通参数
我们可以给va_start()方法传递一个NULL,但是需要通过第一个参数知道可变参数的个数
va_arg获取可变参数的时候必须是对应的类型,否则将会出现不可预知的错误