标签: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