7-函数参数的扩展

7-函数参数的扩展

函数参数的默认值

  • C++中可以在函数声明时为参数提供一个默认值
  • 当函数调用时没有提供参数的值,则使用默认值
int mul(int x = 0);

int main(int argc, char *argv[1]) {
    printf("%d\n", mul());    // mul(0)
    return 0;
}

int mul(int x) {
    return x * x;
}
  • 参数的默认值必须在函数声明中指定

【范例代码】默认参数值初探

#include <stdio.h>

int mul(int x = 0);

int main(int argc, const char *argv[]) {
    printf("%d\n", mul());
    printf("%d\n", mul(-1));
    printf("%d\n", mul(2));

    return 0;
}

int mul(int x) {
    return x * x;
}
【问题】函数定义中是否可以出现参数的默认值?当函数声明和定义中的参数默认值不同时会发生什么?

【答案】编译器不能通过,只能在声明时提供默认参数,定义时不给。

函数默认参数的规则:

  • 参数的默认值必须从右向左提供
  • 函数调用时使用了默认值,则后续参数必须使用默认值
int add(int x, int y = 1, int z = 2) {
    return x + y + z;
}

add(0);         // x = 0, y = 1, z = 2
add(2, 3);      // x = 2, y = 3, z = 2
add(3, 2, 1);   // x = 3, y = 2, z = 1

【范例代码】默认参数的错误示例

#include <stdio.h>

int add(int x, int y = 0, int z = 0);
// int add(int x, int y = 0, int z);

int main(int argc, const char *argv[]) {
    printf("%d\n", add(1));
    printf("%d\n", add(1, 2));
    printf("%d\n", add(1, 2, 3));

    return 0;
}

int add(int x, int y, int z) {
    return x + y + z;
}

函数占位参数

在C++中可以为函数提供占位参数:

  • 占位参数只有参数类型声明,而没有参数名声明
  • 一般情况下,在函数体内部无法使用占位参数
int func(int x, int) {
    return x;
}

// ...

func(1, 2);    // ok!

函数占位参数的意义:

  • 占位参数与默认参数结合起来使用
  • 兼容C语言程序中可能出现的不规范写法

【范例代码】占位参数与默认参数值

#include <stdio.h>

int func(int x, int = 0);

int main(int argc, const char *argv[]) {
    printf("%d\n", func(1));
    printf("%d\n", func(2, 3));

    return 0;
}

int func(int x, int) {
    return x;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的Tkinter库是一个用于创建图形用户界面(GUI)的标准库。下面是一些常用的Tkinter函数及其参数的介绍: 1. Tk()函数:创建一个顶层窗口对象。 参数: - master:可选参数,表示父级窗口,默认为None。 - baseName:可选参数,表示窗口的基本名称,默认为空字符串。 - className:可选参数,表示窗口的类名,默认为Tk。 2. mainloop()函数:进入Tkinter事件循环,等待用户交互。 该函数没有参数。 3. Label()函数:创建一个标签(Label)对象,用于显示文本或图像。 参数: - master:表示父级窗口。 - text:可选参数,表示要显示的文本,默认为空字符串。 - image:可选参数,表示要显示的图像,默认为None。 4. Button()函数:创建一个按钮(Button)对象,用于触发事件。 参数: - master:表示父级窗口。 - text:可选参数,表示按钮上显示的文本,默认为空字符串。 - command:可选参数,表示按钮被点击时触发的函数,默认为None。 5. Entry()函数:创建一个文本输入框(Entry)对象,用于接收用户输入。 参数: - master:表示父级窗口。 - textvariable:可选参数,表示与输入框关联的变量,默认为None。 6. Frame()函数:创建一个框架(Frame)对象,用于组织其他控件。 参数: - master:表示父级窗口。 7. Pack()函数:用于将控件放置到父级窗口或框架中。 参数: - side:可选参数,表示控件放置的方向,默认为TOP。 - fill:可选参数,表示控件填充的方式,默认为NONE。 - expand:可选参数,表示控件是否扩展以填充可用空间,默认为False。 8. Grid()函数:用于将控件以网格形式放置到父级窗口或框架中。 参数: - row:表示控件所在的行。 - column:表示控件所在的列。 - rowspan:可选参数,表示控件占据的行数,默认为1。 - columnspan:可选参数,表示控件占据的列数,默认为1。 9. Place()函数:用于将控件以绝对位置放置到父级窗口或框架中。 参数: - x:表示控件左上角的x坐标。 - y:表示控件左上角的y坐标。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值