va_list 用法




1 #include <cstdarg>                              //这里我们添加进来所需要的类库<csrdarg>
 2
 3 // first argument is int count of remaining args
 4 // ... remaining args are doubles for average
 5
 6 double average(const int count, ...)
 7 {
 8         va_list ap;                              //在这里我们定义一个va_list类型的变量
 9         int i;                                 //在这里我们定义一个可以在下方循环使用的整型变量
10         double total = 0.0;                          //在这里我们定义一个浮点数保存所有的参数的和
11         va_start(ap, count);                         //在这里我们获得可变参数列表的第一个参数的地址,括号里面第一个参数是类型为va_list的指针,第二个参数是可变类型最左边的参数,此处是count
12  
13         for(i = 0; i < count; ++i) { 
14                 total += va_arg(ap, double);                //在这里我们返回可变的参数,括号里面第二个参数是你想要返回的参数类型
15         }
16    
17         va_end(ap);                                //在这里我们可以清空可变参数列表va_list
18         return total / count;
19
20 }

然后我们就可以在主函数中调用这些函数了,效果很不错

void main(int argc, char ** argv){
        printf("The value of avarage is %lg\n", average(3, 7.3, 9.5,8.5));    //结果为8.334
        printf("The value of avarage is %lg\n", average(2, 4.6, 5.4));        //结果为5
}

要记住,函数定义要放在主函数的前面,不然会出现C3861错误,今天就犯了这个错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值