C函数动态参数问题
2008-05-29 15:08
204 查看
#include <stdarg.h>
必须:
(1)在函数原型中使用省略号;
(2)在函数定义中创建一个va_list类型的变量;
(3)用宏将该变量初始化为一个参数列表;
(4)用宏访问这个参数列表;
(5)用宏完成清理工作。
宏va_start() 把参数列表复制到va_list变量中,有两个参数:va_list类型的变量和参量
parmN
宏va_arg() 访问参数列表中的内容,有两个参数:va_list类型的变量和类型名
宏va_end() 完成清理工作,释放动态分配的内存
宏va_copy() 保存va_list副本
#include <stdio.h>
#include <stdarg.h>
double sum(int, ...);
int main(void)
{
double s;
s = sum(3, 1.1, 2.2, 3.3);
printf("sum(1.1,2.2,3.3) = %f/n", s);
return(0);
}
double sum(int lim, ...)
{
va_list ap; // declare variable used to save para
double total = 0;
int i;
va_start(ap, lim); // initialize ap to para list
for(i=0; i<lim; i++){
total += va_arg(ap, double); // visit para list
}
va_end(ap); // clean
return(total);
}
必须:
(1)在函数原型中使用省略号;
(2)在函数定义中创建一个va_list类型的变量;
(3)用宏将该变量初始化为一个参数列表;
(4)用宏访问这个参数列表;
(5)用宏完成清理工作。
宏va_start() 把参数列表复制到va_list变量中,有两个参数:va_list类型的变量和参量
parmN
宏va_arg() 访问参数列表中的内容,有两个参数:va_list类型的变量和类型名
宏va_end() 完成清理工作,释放动态分配的内存
宏va_copy() 保存va_list副本
#include <stdio.h>
#include <stdarg.h>
double sum(int, ...);
int main(void)
{
double s;
s = sum(3, 1.1, 2.2, 3.3);
printf("sum(1.1,2.2,3.3) = %f/n", s);
return(0);
}
double sum(int lim, ...)
{
va_list ap; // declare variable used to save para
double total = 0;
int i;
va_start(ap, lim); // initialize ap to para list
for(i=0; i<lim; i++){
total += va_arg(ap, double); // visit para list
}
va_end(ap); // clean
return(total);
}
相关文章推荐
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- 在动态THML语句中调用JS函数传递带空格参数的问题
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- 关于用函数指针参数申请动态内存的问题
- 函数参数的传递问题(指针的指针)
- Python中函数参数传递问题
- JavaScript中函数作为参数进行传递时的括号问题
- 函数不定量的参数问题
- setInterval函数第一个参数引号问题
- 关于带返回值委托函数和委托函数使用引用参数的问题
- JNI java 调c++动态库函数,多值回传及乱码问题
- SqlServer 动态SQL(存储过程)中Like 传入参数无正确返回值的问题
- 《零基础入门学习Python》学习过程笔记【018函数开头文档,及参数相关问题】
- 关于C/C++的二维数组作为函数参数问题
- javascript动态绑定带参数的函数
- c/c++函数间动态内存传递问题
- PHP实现动态获取函数参数的方法示例
- 函数参数的传递问题(指针的指针)