设为首页 加入收藏

TOP

C++ 可变参数的函数(一)
2013-10-17 09:11:59 来源: 作者: 【 】 浏览:398
Tags:  可变 参数 函数

  C++ 中可变参数的函数有两种类型:

  type    func(...)

  type   func(type,...)

  可变参数顾名思义就是函数的参数数目或者类型是不确定的,对于这种该如何获取传递的参数的值,这就需要对C,C++的函数栈结构有一定的了解。下面就直接进入实战分析:

  #include<iostream>

  #include<cstdarg>

  using namespace std;

  void func(...);

  void func2(intnfirst,...);

  void main()

  {

  cout<<"Thisis func:"<<endl;

  func(1,2,3,5,6,-1);

  cout<<"Thisis func2:"<<endl;

  func2(0,7,4,-1);

  }

  void func(...)

  {

  va_list list;

  va_start(list,list);

  list = list + 12;  //只 所¨ 以° 加¨ 12的 原-因°¨°从 ¨ 临 ¨ 时 变 量 地 址 ¤到 第 ¨ 一° 个 参 数 y之 间 有 D12个 字 节¨ 。 ê

  int n =0;

  std::cout<<n<<endl;

  while(n!= -1)

  {

  n = va_arg(list,int);

  std::cout<<n<<endl;

  }

  va_end(list);

  }

  void func2(intnfirst,...)

  {

  va_list list;

  va_start(list,nfirst);

  int n =0;

  while(n!=-1)

  {

  n = va_arg(list,int);

  std::cout<<n<<endl;

  }

  }

  函数的运行结果:

  关于可变参数的剖析,步骤

  头文件 #include<cstdarg>

  宏定义 va_list,va_start,va_arg,va_end

  步骤:

  1  va_list ap

  标识一个数据结构,ap用来存放可变参数信息。

  2 va_start(ap,v);

  这个宏用来初始化可变参数列表。ap表示初始化的数据结构,它里面存放着后面的可变参数信息。 v标识函数声明中最后一个具有名字的参数,也就是...之前的那个参数。

  3 va_arg(ap,t);

  获取可变参数,t是参数的类型。用这个函数来获取后面的可变参数的值。

  int xx;

  xx = va_arg(ap,int);

   

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.3 Visual C++ 6.0的上机过程.. 下一篇C语言/C++中怎样产生随机数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: