timleee

导航

c++ <stdarg.h> 解决变参问题的宏定义;

在读程序的过程中遇到的va_list类型不认识,百度得到的。:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html (此例子写的更通透,让我知道了function中的第一个参数穿的其实是个地址就是)(来源:http://blog.csdn.net/ID314846818/article/details/51074283)

当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表

void foo(...);

void foo(parm_list,...);
#include <iostream>
#include <stdarg.h>
using namespace std;
int main()
{
    int function(int,...);
    cout<<function(2,2,3)<<endl;
    cout<<function(4,2,4,6,8);
    return 0;
}
int function(int v,...){
    int ReturnValue=0;
    int i=v;
    va_list ap ;//定义va_list类型变量,指向参数的指针ap;
    va_start(ap,v);//初始化这个变量,即指定这个变量所指向的有几个参数;
    cout<<ap[1]<<endl;//此时什么都输不出来;
    while(i>0)
        {
            ReturnValue+=va_arg(ap,int);//返回可变的参数。类型为int;
            i--;
        }
        va_end(ap);//结束标志
        return ReturnValue/v;//返回的是均值;
}

 

posted on 2017-03-11 18:20  timleee  阅读(178)  评论(0编辑  收藏  举报