zoukankan      html  css  js  c++  java
  • 深入浅出-变长参数

    变长参数


    #include<stdarg.h>    //变长参数所需头文件


    va_list v;   //定义一个可变长参数的列表

    va_start(v,cnt);  //将所有的参数保存到va_list中,并把参数个记录在cnt中;cnt是接收函数的第一形参

    变量=va_arg(v,数据类型);   //从va_list中取出第一个参数赋值给变量,变量的数据类型必须和参数的数据类型一致

    va_end(v);  //释放可变长参数列表


    -------------------------实例


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

    int max(int cnt,...);

    int main()
    {
    printf("%d ",max(3,15,24,18));
    printf("%d ",max(5,15,51,18,23,16));
    printf("%d ",max(10,15,24,18,52,123,14,57,48,62,31));
    return 0; 
    }

    int max(int cnt,...)   // '...' 代表可变数目形参列表,也就是说调用该函数的时候可以传递不定数目的实参
    {
    va_list v;        //声明一个va_list类型的变量,用来保存参数
    va_start(v,cnt);  //va_list指向第二个参数,并且参数的个数被cnt记录(cnt可以记录最后一个参数的位数)
    int i;
    int maxvalue=va_arg(v,int);  //从va_list中取出第一个参数赋值给maxvalue
    for(i=1; i<cnt; i++)
    {
    int data =va_arg(v,int);    //从va_list中取出一个参数赋值给data,int是说明参数的数据类型
    if(data>maxvalue)        //进行判断
    maxvalue = data;
    }
    va_end(v);        //.释放va_list
    return maxvalue;  //返回一个值给max函数
    }

    说明:该函数作用是求最大值,所以要把最大值(比较的结果)返回给调用处

  • 相关阅读:
    ES6基础之——Set
    ES6基础之——继承extends
    ES6基础之——静态方法staitc
    ES6基础之——get 与 set
    ES6基础之——Class类
    ES6基础之——生成器Generators
    ES6基础之——迭代器Iterators
    ES6基础之——指向当前对象的原型对象 super
    ES6基础之——__proto__
    Vue慕课网音乐项目随手记--node代理及数据抓取
  • 原文地址:https://www.cnblogs.com/Munu-Laboratory/p/3177019.html
Copyright © 2011-2022 走看看