c++不定量参数 2

1、va_list arg{ };

等同于char*arg{ };

 2、va_start();
存放参数  需要传入形参地址与数量


3、va_arg()

参数与调用次数相对应
读取参数  需要传入形参地址与类型


4、va_end(); 

释放参数  传入形参地址

代码演示:

#include <iostream>
#include<cstdarg>
int average(int count, ...)//unsigned count为参数个数 ...代表个数的具体值
{
    int sum{ };


    va_list arg{ };//相当于char*arg;
    //char* arg{ };
     va_start(arg,count);//该函数为了存放参数 arg存放指针为了获取参数地址

    /*  int y= va_arg(arg,int);//读取该函数参数,int参数类型
     std::cout << y << std::endl;//1
    y = va_arg(arg, int);
    std::cout << y << std::endl;//2
    y = va_arg(arg, int);
    std::cout << y << std::endl;//3 这样可以按顺序读取参数数值 意味着每一次读取内存增加一个类型的大小
    */

    for (int i = 0; i < count; i++)
    {
        sum += va_arg(arg, int);//读取该函数参数,int参数类型
    }
    sum = sum / count;

    //  va_end(arg); //释放内存

    return sum;
}
int main()
{
    std::cout << " 平均数是: " << average(5, 1, 2, 3, 6, 9) << std::endl;//数组比较方便但是只能用同一类型的数据
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值