17、函数作为参数传递

目录

一:先弄懂他的原理:这个函数作为参数传递是啥意思呢?

1、首先,看看我们之前使用的函数,传入形参的都是数据,例如:

2、而我们的函数作为参数传递则与上面的相反,它是先讲数据作为一个函数先定义好,然后再定义一个运算的函数。最后,调用数据函数时,将运算函数作为参数。如:

二:总结:

三:总结中的总结:


一:先弄懂他的原理:这个函数作为参数传递是啥意思呢?

1、首先,看看我们之前使用的函数,传入形参的都是数据,例如:

def a(x, y):  # 接收到的:数字、字符串、字典、元组、列表。归纳为数据。
    return print(x + y)  # 函数体中的为 运算

a(1, 2)  # 括号中的实参都为数据

所以我们可以看出,运算的代码在函数中,而我们只用将数据传入参数中,就可以进行运算得到结果。

———————————————分割———————————————

2、而我们的函数作为参数传递则与上面的相反,它是先讲数据作为一个函数先定义好,然后再定义一个运算的函数。最后,调用数据函数时,将运算函数作为参数。如:

def a(ss):  # 定义一个函数体为数据的函数。此处的形参负责接收之后定义的运算函数。

    abc = b(1, 2, 3)  # 此处的b 为函数,括号中的为实参。===》调用下面的函数b并且运算后将结果赋给abc

    print(abc)  # 输出变量的结果


def b(x, y, z):  # 定义一个函数b,形参对应上面函数b中的实参。
    return x + y + z  # 调用这个函数时返回运算逻辑


a(b)  # 调用a,并将 函数b作为参数传递。

 所以就是将一份数据作为函数定义好,然后定义一个运算的函数并作为参数传入。

———————————————————分割线—————————————————————

二:总结:

两者都区别在于:

一个是将运算的逻辑定义好,并作为函数。然后调用函数时,传入数据,就可以得到结果。

而另一个则是将数据作为函数定义好,再定义一个用来运算的函数,并将这个函数作为参数,放在(定义好数据的)函数的括号中,让其被调用。

三:总结中的总结:

函数作为参数传递就是计算逻辑的传递,而非数据的传递。
一个是传递运算逻辑,对已经定义好的数据的函数进行运算。一个是传入数据,通过已经定义好运算逻辑的函数进行运算。

———————————————————————————————————————

总之就是:一个是函数中放运算表达式,然后传入的是数据。

另一个是函数中放数据,然后传入放表达式的函数。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们将函数作为参数传递给另一个函数时,我们可以使用函数指针或函数对象(函数器)来实现。 1. 函数指针: 使用函数指针,我们首先需要定义一个与要传递函数具有相同签名(参数和返回值类型)的函数指针类型。然后,我们可以将函数的名称赋给指针,并将该指针作为参数传递给另一个函数。 例如,假设我们有一个函数 `void foo(int)`,我们希望将其作为参数传递给另一个函数 `void bar(void (*func)(int))`,则可以这样做: ```cpp void foo(int x) { // 函数体 } void bar(void (*func)(int)) { // 调用函数指针所指向的函数 func(42); } int main() { // 将函数指针作为参数传递给另一个函数 bar(foo); return 0; } ``` 2. 函数对象(函数器): C++中的函数对象是可调用对象,可以像函数一样被调用。我们可以定义一个类,并在该类中实现 `operator()` 运算符重载。然后,我们可以创建该类的对象,并将该对象作为参数传递给另一个函数。 例如,假设我们有一个函数对象类 `Foo`,我们希望将其作为参数传递给另一个函数 `void bar(Foo)`,则可以这样做: ```cpp class Foo { public: void operator()(int x) { // 函数体 } }; void bar(Foo func) { // 调用函数对象 func(42); } int main() { // 将函数对象作为参数传递给另一个函数 Foo foo; bar(foo); return 0; } ``` 无论是使用函数指针还是函数对象,我们都可以将函数作为参数传递给其他函数,并在接受参数函数中调用该函数。这样可以实现更灵活的代码设计和功能扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值