码迷,mamicode.com
首页 > 其他好文 > 详细

参数个数可变的函数

时间:2014-09-07 19:48:35      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   for   art   div   

使用va_start(),va_arg(),va_end(),操作了可变元

定义如下:

#include<stdarg.h>

type va_arg(va_list argptr,type);
void va_start(va_list argptr,last_parm);
void va_end(va_list argptr);

用法:

 1 #include<stdio.h>
 2 #include<stdarg.h>
 3 
 4 double sum_series(int num, ...);
 5 
 6 int main(void)
 7 {
 8     double d;
 9     d=sum_series(4,0.5,0.25,0.125,0.0625);
10     printf("%f\n",d);
11     return 0;
12 }
13 
14 double sum_series(int num, ...)
15 {
16     double sum=0.0;
17     double t;
18 
19     va_list argptr;
20 
21     va_start(argptr,num);
22 
23     for(;num;--num)
24     {
25         t=va_arg(argptr,double);
26         sum=sum+t;
27     }
28     va_end(argptr);
29     return sum;
30 }

简单理解是这样的,

定义函数的时候参数表最右定义一个int型变量作为参数变量个数,

使用的时候通过va_start定义num数目的参数指针,也就是声明了有几个参数,

每一次调用va_arg就是将当前参数定义为type类型的参数,之后argptr下移,

全部参数取完之后使用va_end()结束,这样会确保堆栈正常(参数保存在堆栈中)。

参数个数可变的函数

标签:style   blog   color   io   使用   ar   for   art   div   

原文地址:http://www.cnblogs.com/lhyz/p/3960665.html

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