首页 > 代码库 > 变长参数表

变长参数表

//变长参数表.cpp

#include<iostream>
#include<cstdarg>//标准头文件,提供宏va_start,va_arg和va_end,用于存取变长参数表

typedef int ElemType;
using namespace std;

ElemType MaxSeek(int num,...);
int  main ()
{
    cout<<"最大值为"<<MaxSeek(4,5,2,0,36)<<endl;
    cout<<"最大值为"<<MaxSeek(5,2,2,10,85,1000)<<endl;
    return 0;
}
ElemType MaxSeek(int num,...)
{  //函数功能: 返回num个数的最大值
    va_list ap;//定义ap是变长参数表类型(c语言的数据类型)
    int  i;
    ElemType max,n;
    if(num<1)
        return 0;
    va_start(ap,num);//这样做,可以使ap后移,可以使它指向固定参数ap后面的实参
    max = va_arg(ap,ElemType);//使p指向第一个可变实参,采用擂台算法
    for(i = 1;i<num;i++)
    {
        n = va_arg(ap,ElemType);
        if(max<n)
            max=n;
    }
    va_end (ap);//与va_start匹配,结束对变长参数表的读取,ap不再指向任何参数表
    return max;
}

变长参数表