`
慭慭流觞
  • 浏览: 44034 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

C以及Java中可变参数列表函数定义方法

    博客分类:
  • Java
阅读更多

一、C语言中可变参数列表函数写法:
1.导入头文件: #include<stdarg.h>
2.声明一个列表宏:va_list arg;
3. 用宏va_start将该变量初始化为一个参数列表。作用是将调用时传递的参数列表复制到va_list变量中,并指明开始的参数。
va_start()有两个参数:(va_list列表变量,紧挨着省略号前的参数)
4.va_arg(va_list列表变量,参数类型),每执行一次,就依次向下获得一个参数
5.va_end(arg) 释放变量列表空间

#include<stdio.h>
#include<stdarg.h>
int max(int first,...)//取得输入的正数的最大值,以负数结束输入
{
    int max=first;
    va_list arg;//声明变量列表
    va_start(arg,first);//指明变量列表开始的位置,从省略号前第一个数开始
    int t=va_arg(arg,int);//执行一次,依次向下获得一个参数
    while(t>0) //循环获得参数
    {
        max=t>max?t:max;
        t=va_arg(arg,int);
    }
    va_end(arg);//释放列表变量空间
    return max;
}
int average(int n,int a,...)// 为简单起见以0结束输入
{
    int sum=0;
    va_list arg;
    va_start(arg,a);
    int t=va_arg(arg,int);
    while(t!=0)
    {
        sum+=t;
        t=va_arg(arg,int);
    }
    va_end(arg);
    return sum/n;
}
int main()
{
    printf("%d\n",max(10000200,2,3,4,5,6,1000,10,2212,-1,11,33));//max的参数可以随意添加,以负数结尾
    printf("%d\n",average(10,1,2,3,4,5,6,7,8,9,10,0));
    getchar();
}

 
二、java中可变参数列表函数写法:
直接上例子:(参数类型与省略号以及变量之间可以加空格也可以不加),可变参数列表就相当于一个数组,我们可以通过循环依次访问它们

package a;
public class G 
{
    public static int add(int...x)
    {
        int sum=0;
        /* for(int i=0;i<x.length;i++)
        sum+=x[i];*/
        for(int i:x) //增强型for循环,i为索引
        sum+=i; //依次加上索引指定的值
        return sum;
    }
    public static void main(String[] args)
    {
        System.out.println(add(1,2,3,4,5));
    }
}

 

 

分享到:
评论

相关推荐

    关于java中可变长参数的定义及使用方法详解

    下面小编就为大家带来一篇关于java中可变长参数的定义及使用方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    基础深化和提高-java函数式编程

    在Java中,通过Lambda表达式,可以很方便地传递函数作为方法参数。 不可变性:倡导使用不可变对象和不可变数据结构,避免副作用和状态的改变。 纯函数:函数没有副作用,对于相同的输入始终产生相同的输出,不依赖...

    Java实验的答案源程序

    函数定义10对(x,y)值,由此创建的Point类实例存入一个数组中,按与原点(0,0)的距离由小到大的顺序输 出所有的点及到原点的距离。 编写一个人与计算机对拿火柴的游戏程序。利用随机函数Math.random()产生火 柴...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java基础入门教程

    4 软 件 最 终 产 品 :用 Java 语 言 开 发 的 软 件 可 以 具 有 可视化 、 可 听 化 、 可 操作 化 的 效 果 ,这 要 比 电 视 、 电 影 的 效果 更 为 理 想 ,因 为 它 可 以做 到 "即 时 、 交 互、 动 画 与 ...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    java 面试题 总结

     final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的...

    JAVA资格认证:SCJP310-055中文

    第一部分:声明、初始化、和作用域。... 定义并使用可变参数。正确重写和重载方法并识别方法合法的返回值,包括协变返回。  为类及层次类编写构造函数,知道默认构造函数的行为,实例化类及内部类

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包9

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包101

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    国内常用jdk资源,jdk8资源

    在最简单的形式中,一个lambda可以由:用逗号分隔的参数列表、–&gt;符号、函数体三部分表示,在某些情况下lambda的函数体会更加复杂,这时可以把函数体放到在一对花括号中,就像在Java中定义普通函数一样。Lambda可以...

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics