C++中带省略号的参数叫甚么名字来着的?

ty263 2006-11-08 01:54:38
比如printf的声明:
int printf(const char *format [,argument]... );
参数的这种用法叫甚么名字?

...全文
378 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2006-11-09
  • 打赏
  • 举报
回复
在C++里,可以取代大部分变参需求。
想想,cout << i << j << k。。。。不也是变参了么。
不过,其实现技术稍微麻烦了点。
kenneth_lueng 2006-11-08
  • 打赏
  • 举报
回复
省略号表示“还可能有另外一些参数”
一般来说,只有在那些参数数目和参数类型都有变化的情况下才需要省略号
楼上的
va_list ap;
va_start(ap, i);
...
va_arg(...);
...
va_end(ap);
是必需的;
va_arg()用于按顺序提取出各个无名参数。
va_start()可能会修改了堆栈,这种修改可能导致返回无法完成
va_end()能将有关的修改复原
e_ville 2006-11-08
  • 打赏
  • 举报
回复
变长参数列表。示例程序如下:
// var_arg.cpp -- Using variable-length argument lists
// 2006-07-29 12:46

#include <iostream>
#include <iomanip>
#include <cstdarg>
using namespace std;

double average(int i, ...);

int main() {
double w = 37.5, x = 22.5, y = 1.7, z = 10.2;
cout << "Average of w, x: \t" << average(2, w, x) << endl;
cout << "Average of w, x, y: \t" << average(3, w, x, y) << endl;
cout << "Average of w, x, y, z: \t" << average(4, w, x, y, z) << endl;

return 0;
}

double average(int i, ...) {
double total = 0.0;
va_list ap;
va_start(ap, i);
for(int j = 1; j <= i; j++)
total += va_arg(ap, double);

va_end(ap);
return total / i;
}

Jim_King_2000 2006-11-08
  • 打赏
  • 举报
回复
当然可以不同。但是对变参不提供类型检查,我们还是少用为妙,除非万不得已。
ty263 2006-11-08
  • 打赏
  • 举报
回复
可变参数中参数的类型可以不同吗?
yanghy2013 2006-11-08
  • 打赏
  • 举报
回复
一样可以用
象CString 中的format成员函数就是这样用的
ty263 2006-11-08
  • 打赏
  • 举报
回复
这种参数在C++中能用吗?
或者在C++中有没有更好的替代品?

多谢
lann64 2006-11-08
  • 打赏
  • 举报
回复
可变参数
KenYuan2016 2006-11-08
  • 打赏
  • 举报
回复
同意 楼上
taodm 2006-11-08
  • 打赏
  • 举报
回复
不定参数、变参

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧