C语言中的可变参数列表

C语言中的可变参数的列表

从语言中有时候会遇到一些参数个数是可变的函数,像scanf,printf等,这些函数内部的参数列表都是可变的
如函数原型:scanf(const char * format,…);
解释:除了format以外,后面跟着的参数 个数,类型是可变的,用…作为一种占位符号。
“…”称为可变参数列表,可以用来接受个数和类型不确定的参数

使用:
可变参数列表在C语言中使用这样的三个宏(va_start,va_arg,va_end)和一个类型(va_list)来进行实现的,他们都是定义在stdarg.h头文件中的

宏:
1:va_start原型:
void va_start(va_list ap,paramN);
参数:va_list:存储参数的类型信息
ap:可变参数列表地址
paramN:确定的参数
2:va_arg原型:
void va_arg(va_list ap,type);
返回下一个参数的值
3:va_end原型:
void va_end(va_list ap,type);
关闭初始化的列表

使用方式:
1. 使用va_list初始化可变参数列表
2. 使用va_arg逐个获取参数值
3. 用va_end将可变参数列表清空

示例代码

#include<stdio.h>
#include<stdarg.h>

float average_list(int value_num,...);


int main(int argc,char * argv[]){
    printf("average_1:%.2f\n",average_list(8,1,3,5,7,9,12,15,17));

    return 0;
}



float average_list(int value_num,...){
    va_list list;
    float sum = 0.0f;
    va_start(list,value_num);
    int i ; 
    for(i = 0;i<value_num;i++){
        sum += va_arg(list,int);
    }   
    va_end(list);

    return sum/value_num;
}

输出的结果为:
average_1:8.62

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值