c++ 变长参数列表

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:39:47
void func(...);

int main()
{
func(1,2,3);
}

如何取出1 ,2 3
C++不支持变长参数列表的话 有什么好办法支持

确实 C 还是C++ 的 自定义函数 都不支持 变参数列表,不过C++用函数的重载,要求是 参数的个数,或 类型要不完全一样,也就是可以存在
fun(int a) fun(int a ,int b) 。。。
这样太不现实了,毕竟参数太多了不可能写这么多的过程。
但是确实存在 变长的函数 如:经常见的 printf 这样定义的 printf(const char *, ...); 我们也是这么用的。
printf(“%d”,i) printf(“%d%d”,i,j)

你可以去看看这个函数的定义说明,看看微软怎么来解决的。
这里我给你 想个办法。
我们学习 主函数引入参数方法
main(int argc, TCHAR* argv[])
也就是fun(int argc, TCHAR* argv[])
int argc是参数的个数
TCHAR* argv[] 存放参数列表
调用函数的时候这样fun(5,"12345")
那么参数就是
argv[0]=1
argv[1]=2
。。。。。。。。
argv[argc-1]=5

c++支持变长参数 但是需要默认值 比如

#include <iostream>

void func(int a=0,int b=0,int c=0){
std::cout<<"a="<<a<<" b="<<b<<" c="<<c<<"\n\n";
}

int main(){
func(1,2,3);
func();
func(1,2);
func(1);
system("pause");
return 0;
}<