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函数
    }

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

  • 相关阅读:
    JavaScript Object.prototype.toString 解析过程
    今天一定要纪念一下
    考验你的JavaScript底细
    2016-3-23
    记录一下最近的感受
    mac ox快捷键总结
    如何把开源的项目fork到自己的仓库并Down到本地
    使用vue-cli构建vue.js项目
    成为一名优秀的web前端工程师都需要做些什么?
    关于angularjs input上传图片前获取图片的Size 浅析
  • 原文地址:https://www.cnblogs.com/Munu-Laboratory/p/3177019.html
Copyright © 2011-2022 走看看