C语言学习020:可变参数函数

  顾名思义,可变参数函数就是参数数量可变的函数,即函数的参数数量是不确定的,比如方法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获取可变参数的时候必须是对应的类型,否则将会出现不可预知的错误

posted @ 2016-04-10 20:07  高效养猪倌  阅读(367)  评论(0编辑  收藏  举报