可变数目的函数参数
2008-12-10 11:23
204 查看
可变数目的函数参数:
宏va_start()、va_end()、va_arg()一起作用,便可以向函数传入可变数目的参数操作
宏原型:
void
va_start(va_list argptr, last_parm);
void
va_end(va_list argptr);
type va_arg(va_list argptr, type);
参数说明:
Last_parm为参数列表的数组名
实例:
# include <stdio.h>
# include <stdarg.h>
double sum_series(int num,
...);
int main()
{
double d;
d = sum_series(4, 0.5, 0.25, 0.125, 0.0625);
printf("Sum of series is
%f./n", d);
return 0;
}
double sum_series(int num, ...)
{
double sum = 0.0, t;
va_list argptr; //[/b]①[/b]
/* 初始化argptr */
va_start(argptr, num); //[/b]②[/b]
/* 计算序列之和*/
for( ; num; num--)
{
t = va_arg(argptr, double);//[/b]③[/b]
sum = sum + t;
}
va_end(argptr);//收尾处理//[/b]④[/b]
return sum;
}
宏va_start()、va_end()、va_arg()一起作用,便可以向函数传入可变数目的参数操作
宏原型:
void
va_start(va_list argptr, last_parm);
void
va_end(va_list argptr);
type va_arg(va_list argptr, type);
参数说明:
Last_parm为参数列表的数组名
实例:
# include <stdio.h>
# include <stdarg.h>
double sum_series(int num,
...);
int main()
{
double d;
d = sum_series(4, 0.5, 0.25, 0.125, 0.0625);
printf("Sum of series is
%f./n", d);
return 0;
}
double sum_series(int num, ...)
{
double sum = 0.0, t;
va_list argptr; //[/b]①[/b]
/* 初始化argptr */
va_start(argptr, num); //[/b]②[/b]
/* 计算序列之和*/
for( ; num; num--)
{
t = va_arg(argptr, double);//[/b]③[/b]
sum = sum + t;
}
va_end(argptr);//收尾处理//[/b]④[/b]
return sum;
}
相关文章推荐
- 函数可变参数数目(日志)
- C 语言可变参数类型函数
- 参数个数可变函数浅析
- C/C++函数参数的入栈顺序,计算顺序和可变参数的实现
- golang函数可变参数传递性能问题
- 解析可变参数函数的实现原理(printf,scanf)
- 如何实现可变参数函数
- C 语言的可变参数表函数的设计
- 详解如何实现定义一个参数个数可变的函数
- Java可变参数函数
- C语言可变参数函数的实现
- 通过Java发射机制调用可变参数函数
- Python中函数可变参数类型(*args、**kwargs)
- 可变参数函数
- c++技巧之可变参数函数
- 【java基础】函数的可变参数类型
- php 函数使用可变数量的参数
- 关于C中函数的可变参数va_list...
- C语言中的参数可变函数
- C/C++中用va_start/va_arg/va_end实现可变参数函数的原理与实例详解