66.函数指针和回调函数

一.函数指针和回调函数

回调的意思一个函数具有函数指针类型的函数参数,将这个函数指针作为函数参数传到函数里面,当函数执行完之后,再执行通过函数指针传进去的这个函数。这个过程就叫做回调。(或者说通过函数指针调用的函数叫做回调函数)

函数指针最多的一个用处就是回调函数。

二.回调函数的应用

一般开发者会定义一个比较通用的函数,使用者在调用这个函数时需要提供一个函数指针作为参数,在通用的函数中通过函数指针调用使用者开发的函数。

这样做可以提供代码的兼容性。

举例:

#include <stdio.h>


int add(int a,int b)
{
    return a + b;
}

int multiply(int a,int b)
{
    return a * b;
}


int func(int (*fp)(int a,int b),int c,int d)
{
    return fp(c,d);
}

int main(void)
{

    int num;
    num = func(multiply,1,2);

    printf("value is %d\n",num);

    num = func(add,1,2);
    
    printf("value is %d\n",num);

    return 0;
 
}

分析:

函数名可以被当作一个常量,它保存了函数的内存地址,而函数的内存地址又存储了函数开始执行的位置。

所以就可以通过函数指针保存函数的地址,也就是指向函数的指针。如

int (*fp)(int a,int b);
fp = add;

所以使用函数指针可以允许我们调用相同形式的函数参数和返回值的不同功能函数。从而增加代码的灵活性。具体应用就是回调函数。

三.视频教程

66.函数指针和回调函数_哔哩哔哩_bilibili

相关推荐

  1. 66.函数指针函数

    2024-07-16 05:52:03       20 阅读
  2. C++ 函数指针函数

    2024-07-16 05:52:03       40 阅读
  3. C 函数指针函数

    2024-07-16 05:52:03       27 阅读
  4. 指针函数&函数指针&函数相关知识

    2024-07-16 05:52:03       53 阅读
  5. C语言:指针函数

    2024-07-16 05:52:03       28 阅读
  6. C语言函数指针函数

    2024-07-16 05:52:03       41 阅读
  7. 「C系列」C 函数指针/函数

    2024-07-16 05:52:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 05:52:03       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 05:52:03       55 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 05:52:03       46 阅读
  4. Python语言-面向对象

    2024-07-16 05:52:03       56 阅读

热门阅读

  1. MySQL第七次作业

    2024-07-16 05:52:03       20 阅读
  2. 机器学习与神经网络之间的关系 --九五小庞

    2024-07-16 05:52:03       18 阅读
  3. 面试题011-数据库-MySQL(事物+锁)

    2024-07-16 05:52:03       25 阅读
  4. Makefile 自动化变量以及模式匹配

    2024-07-16 05:52:03       22 阅读
  5. 云原生、Serverless、微服务概念

    2024-07-16 05:52:03       27 阅读
  6. x264 编码过程中视频相关数据流转分析

    2024-07-16 05:52:03       21 阅读
  7. Spring 如何解决循环依赖问题

    2024-07-16 05:52:03       20 阅读
  8. Python小工具—txt转excel和word

    2024-07-16 05:52:03       18 阅读
  9. Matplotlib库学习之mpl_toolkits.mplot3d.Axes3D函数

    2024-07-16 05:52:03       23 阅读
  10. uniapp 如何实现路由拦截,路由守卫

    2024-07-16 05:52:03       19 阅读
  11. 健康管理平台的元宇宙革新

    2024-07-16 05:52:03       15 阅读
  12. Spring Batch批量处理数据

    2024-07-16 05:52:03       21 阅读
  13. lua package.path

    2024-07-16 05:52:03       21 阅读
  14. 【AI原理解析】—支持向量机原理

    2024-07-16 05:52:03       22 阅读