- 首页 > it技术 > >
- 在C/C++里面,“函数可变参”在某些时候是很有用的,比如说再输出日志或者计算一些不清楚数目的数字的和。
- 首先就是要用到的头文件
#include
- 要用到下面几个类型和方法:
- va_list
typedef char * va_list;
//就是个指针
- va_start
va_start(ap,v) //将ap指向v之后的位置
- va_arg
va_arg(ap,t) // 取出ap的值,并将ap指向下一个位置。t就是类型,可以是int,double等等
- va_end
va_end(ap) //// 置空
- 附上源码
#include
#include
#include
int sum(int n, ...)
{
??va_list arg_ptr;
??int i = 0, nRes = 0;
??va_start(arg_ptr, n);
??for(;
i < n;
++i)
??{
????int temp = va_arg(arg_ptr, int);
????nRes += temp;
??}
??va_end(arg_ptr);
??return nRes;
}
void myPrintf(const char *strFormat, ...)
{
??if(NULL==strFormat) return;
??va_list arg_ptr;
??va_start(arg_ptr, strFormat);
??char strInfo[1000] = {0};
// 小心别溢出?
??vsprintf(strInfo, strFormat, arg_ptr);
// 按格式打印到strInfo,功能类似sprintf
??fputs(strInfo, stdout);
??va_end(arg_ptr);
}
【C/C++中的可变参数函数】int main()
{
??myPrintf("%s %d\n","the result is ", sum(4, 45, 15, 45, 100));
??return 0;
}
推荐阅读