C/C++、Java、Go、Python总结对比25-默认参数值

默认参数就是我们在定义函数的时候,有时候传入的参数大多数情况下都是使用同一个值,这个时候就需要定义默认参数的值来达到简化函数调用的目的。

个人理解他可以间接实现函数重载的效果。下面来看下各个语言的写法。

c的写法

c中没有默认参数值的概念,不过可通过宏定义间接实现默认参数值的效果。

#include <stdio.h>

//在宏定义中,宏参数名前加上#表示为一个字符串
//定义DEFARG宏,后面的判断表达式表示如果存在name的值,则为name,不存在则name的值为defval
#define DEFARG(name, defval) ((#name[0]) ? (name + 0) : defval)

int _f1(int i) {
    return 2 * i;
}

//定义_f1为f1函数,并将定义的DEFARG宏作为参数
#define f1(arg0) _f1(DEFARG(arg0, 0))

int _f2(int i, int j) {
    return i + j;
}

#define f2(arg0, arg1) _f2(DEFARG(arg0, 0), DEFARG(arg1, 1))

int main() {
    printf("%d\n", f1());
    printf("%d\n", f1(1));

    printf("%d\n", f2(,));
    printf("%d\n", f2(2,));
    printf("%d\n", f2(, 3));
    printf("%d\n", f2(4, 5));
    return 0;
}
//这个方法存在一个问题,对于有多个参数的函数,调用时需要将参数列表中的每个”,“写出来,不过这样也带来一个好处,可以把默认参数放在非默认参数之前。

c++的写法

#include <stdio.h>

//直接在传入参数后面添加等号值表示默认参数
//默认参数从右向左定义,也就是说void printNums(int firstnum=10, int secondnum)这种写法是错误的
void printNums(int firstnum, int secondnum = 10) {
    printf("firstnum is %d\n", firstnum+secondnum);
}

int main() {
    printNums(2);
    printNums(2, 12);
}

python的写法

def get_nums(firstname=3, secondname = 10):
    print("sum is " + str(firstname+secondname))


if __name__ == "__main__":
    get_nums()
    get_nums(2)
    get_nums(2, 12)

对比总结:

  1. c、java和go不能实现默认参数值,虽然c可以间接实现,但是在实际当中实现这个默认参数的过程就花费了不少时间,个人不赞同郑重方法。有这时间还不如复制几行然后稍微更改下。
  2. c++和python的默认参数实现写法大致相同,需要注意的是,c++的默认参数必须从右向左定义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Mac 和 Linux 上进行编程可以使用相同的开发工具和语言。以下是一些常用的编程工具和语言: 1. 编程语言: - C/C++: 用于系统级编程和性能密集型应用。 - Python: 用于脚本编程、数据分析和Web开发。 - Java: 用于跨平台应用开发。 - JavaScript: 用于前端开发和构建Web应用。 - Ruby: 用于Web开发和脚本编程。 - Go: 用于构建高性能和可扩展的应用程序。 - Rust: 用于系统级编程和高性能应用开发。 2. 编辑器和集成开发环境(IDE): - Visual Studio Code (VSCode): 轻量级编辑器,支持多种编程语言。 - Sublime Text: 强大的文本编辑器,可通过插件进行扩展。 - Atom: 开源编辑器,可定制和扩展。 - IntelliJ IDEA: 适用于Java和其他JVM语言的集成开发环境。 - Eclipse: 适用于多种编程语言的集成开发环境。 3. 版本控制系统: - Git: 用于跟踪代码的变化,与GitHub等平台集成。 4. 命令行工具: - Bash: 默认的命令行终端,可用于执行各种命令和脚本。 - Make: 用于自动化构建和编译项目。 5. 包管理器: - Homebrew: Mac上的包管理器,可用于安装各种软件和库。 - apt-get: Linux上的包管理器,常用于Ubuntu和Debian。 这些只是一些常用的工具和语言,实际上,Mac 和 Linux 上可以使用许多其他工具和语言进行编程。选择适合你的需求和喜好的工具和语言,开始你的编程之旅吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值