首页 > 代码库 > 参数个数可变的函数
参数个数可变的函数
使用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()结束,这样会确保堆栈正常(参数保存在堆栈中)。
参数个数可变的函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。