码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-04-10 21:12:02      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

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

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

标签:

原文地址:http://www.cnblogs.com/liunlls/p/C_varargs.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!