当前位置: 首页 > article >正文

【看到哪里写到哪里】C的指针-3(函数指针)

//定义四个函数 加减乘数
int add(int a, int b)
{return a + b;
}
int subtract(int a, int b)
{return a - b;
}
int multiply(int a, int b)
{return a * b;
}
int divide(int a, int b)
{if (b == 0){printf("Error: devision by ZERO!");return 0;}return a / b;
}
//定义指针函数
typedef int (*MathOperation)(int, int);int testFuncPtr()
{//函数指针,申请四个指针;其实也可以直接用数组,不过,实际开发中,用指针的场景更多些。MathOperation *mathOperation;mathOperation = (MathOperation *)malloc(4 * sizeof(MathOperation));//给函数指针赋值mathOperation[0] = &add;mathOperation[1] = &subtract;mathOperation[2] = &multiply;mathOperation[3] = &divide;int a = 10;int b = 2;for (int i = 0; i < 4; i++){//调用函数指针指向不同的函数int result = mathOperation[i](a, b);switch (i){case 0:case 1:case 2:case 3://输出结果,这里有个小技巧printf("%d %c %d = %d\n", a, "+-*/"[i], b, result);break;default:break;}}free(mathOperation);
}输出结果:
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5

还是要看基础概念:C程序中,每个函数肯定处于内存中的某个位置,所以指向这个位置,就可以用指针来做啊。这就是函数指针的存在基础!

上面是一个简单的例子,

1、定义四个函数做加减乘除;

2、定义指针函数

3、定义一个函数指针数组,赋值成四个函数的地址;

4、做四个计算,输出结果内容;

这个例子,对理解函数指针和指针函数,有基础的、实际的意义。

注:这里的【"+-*/"[i]】,其实也是指针应用,回头单独讨论

            //输出结果,这里有个小技巧printf("%d %c %d = %d\n", a, "+-*/"[i], b, result);

http://www.lryc.cn/news/2397105.html

相关文章:

  • 麦克风和电脑内播放声音实时识别转文字软件FunASR整合包V5下载
  • PyTorch——卷积层(3)
  • (面试)OkHttp实现原理
  • 从 PyTorch 到 TensorFlow Lite:模型训练与推理
  • C++ 17 正则表达式
  • 【存储基础】存储设备和服务器的关系和区别
  • kernel内核和driver驱动的区别
  • 5.29打卡
  • 【黑马程序员uniapp】项目配置、请求函数封装
  • ios tableview吸顶
  • PyTorch——DataLoader的使用
  • 【Python 进阶2】抽象方法和实例调用方法
  • 第1章:走进Golang
  • Predixy的docker化
  • C++ 之 多态 【虚函数表、多态的原理、动态绑定与静态绑定】
  • 【JavaWeb】Maven、Servlet、cookie/session
  • [蓝桥杯]阶乘求值【省模拟赛】
  • 鸿蒙OSUniApp微服务架构实践:从设计到鸿蒙部署#三方框架 #Uniapp
  • Rust 编程实现猜数字游戏
  • 关于神经网络中的激活函数
  • CentOS_7.9 2U物理服务器上部署系统简易操作步骤
  • 第十三篇:MySQL 运维自动化与可观测性建设实践指南
  • 短视频平台差异视角下开源AI智能名片链动2+1模式S2B2C商城小程序的适配性研究——以抖音与快手为例
  • HTTP 如何升级成 HTTPS
  • 【笔记】Windows 下载并安装 ChromeDriver
  • Spark-Core Project
  • SQL 中的 `CASE WHEN` 如何使用?
  • Wireshark 使用教程:让抓包不再神秘
  • JWT安全:接收无签名令牌.【签名算法设置为none绕过验证】
  • 什么算得到?什么又算失去?