c++学习之不定量参数篇

cstdarg库的使用之不定量参数

几个函数:

1、va_start(va_list arg,unsigned count);
目的: 找到不定量参数临时占用的栈空间首地址,并告诉编译器参数个数

2、va_arg(va_list arg,typename);
目的: 根据不定量参数的首地址和类型名,来进行不同的偏移取值
注意: 这个函数每用一次,参数便读一次。通过多次使用这个函数来达到读取全部参数的功能

3、va_end(va_list arg);
目的: 释放这块内存

代码案例如下:

#include <iostream>
#include<cstdarg> //需要包含这个库
using namespace std;

//第一个变量为参数个数,最好时无符号整数的,后面一个逗号+三个‘.’
int Add(unsigned count, ...)  
{
    int sum{};
    //char * c_arg{};
    //本质上就是char*型的,目的就是指向那几个参数的首地址(参数肯定是连续的)
    va_list c_arg{};
    //找到变量首地址
    va_start(c_arg, count);
    for (int i= 0; i < count; i++)sum += va_arg(c_arg, int);  //反复读取
    va_end(c_arg); //释放内存
    return sum;
}

int main()
{
    cout << "3+2+1 = " << Add(3, 1, 2, 3) << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值