变参函数的相关介绍

10 篇文章 1 订阅
9 篇文章 0 订阅

前言

在计算机程序设计,一个可变参数函数是指一个函数拥有不定引数,即是它接受一个可变数目的参数。简单来说,就是函数的参数个数可变,参数类型不定的函数。

C/C++

变参数函数使用在其最后一个参数后加省略号声明,例如int printf(const char* format, ...);。相关头文件定义在<stdarg.h>库文件中,库文件中含以下重要工具:

类型说明
va_list args定义变参列表arg
函数说明
va_start(args,n)初始化args指向n的下一个参数
va_arg(args,type)访问下当前的type类型参数,args指向下一个参数
va_copy(args1,args)获取args参数副本赋给args1
va_end(args)释放args

说明:

  • 变参是通过三个点号(…)来表示。
  • 变参不能是函数第一个参数,否则编译器会报错
  • 变参必须是函数的最后一个参数
  • va_start的第二个参数要求是最后一个命名参数

求和函数示例:

int sum(int n,...)
{
   int sum=0;
   va_list args;
   va_start(args,n);
   while(n>0)
   {
     sum+=va_arg(args,int);
     n--;
   }
   va_end(args);
   return sum;
}

如sum(3,0,1,2)表示3个数求和(0,1,2)。

缺点:第一个参数不能是参变参数。

JAVA

写法与C/C++类似,不同之处在于JAVA可以只有变参参数,且JAVA必须带有参数名。

public class test{
    static int sum(int... n){
        int r=0;
        for (int i=0;i<n.length;i++){
            r+=n[i];
        }
        return r;
    }
    public static void main(String args[]){
        System.out.println(sum(1,2,3));
    }
}

注意:

  • JAVA变参要指定参数名
  • 变参可以像字符串一样访问
  • 变参后不可再跟参数
  • 可以只有变参

Python

*做变参:
传入的参数被视为元组或列表

def sum(*n):
    r = 0
    for i in n:
        r = r+i
    return r
    
print(sum(1,2,3))

**做变参:

传入的参数被视为字典

def p(**n):
    print(n['a'])

p(a='A', b=3, c=3)

这里**n被视为字典,将会输出索引为a的字典值,即后面的A。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cout0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值