码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 利用函数指针数组写计算器(转移表)


    一、什么是函数指针数组?

    函数指针数组本质是数组,存放的元素是函数指针类型的,即存放函数的地址。

     

    函数指针数组的类型:

    如下列代码,指针数组pfArr的类型是  int(*[2])(int, int)

    [ ]的优先级比*高,pfArr先与[ ]结合,因此pfArr是数组

    int (*) (int,int)是数组存放元素的类型,即函数指针类型

    1. int Add(int x, int y)
    2. {
    3. return x + y;
    4. }
    5. int Sub(int x, int y)
    6. {
    7. return x - y;
    8. }
    9. int main()
    10. {
    11. int* pf1 = &Add;
    12. int* pf2 = ⋐
    13. int(*pfArr[2])(int, int) = { pf1,pf2 };//数组中存放类型相同的元素
    14. return 0;
    15. }
    二、函数指针数组实现计算器小程序 
    1. int Add(int x, int y)
    2. {
    3. return x + y;
    4. }
    5. int Sub(int x, int y)
    6. {
    7. return x - y;
    8. }
    9. int Mul(int x, int y)
    10. {
    11. return x * y;
    12. }
    13. int Div(int x, int y)
    14. {
    15. return x / y;
    16. }
    17. void Menu()
    18. {
    19. printf("********************\n");
    20. printf("***** 1. 加法 *****\n");
    21. printf("***** 2. 减法 *****\n");
    22. printf("***** 3. 乘法 *****\n");
    23. printf("***** 4. 除法 *****\n");
    24. printf("***** 0. 结束 *****\n");
    25. printf("********************\n");
    26. }
    27. int main()
    28. {
    29. int(*pfArr[])(int, int) = { NULL,Add,Sub,Mul,Div };
    30. int x = 0;
    31. int y = 0;
    32. int input = 0;
    33. do
    34. {
    35. Menu();
    36. printf("请选择:>");
    37. scanf("%d", &input);
    38. if (input == 0)
    39. {
    40. printf("退出程序\n");
    41. }
    42. else if (input >= 1 && input <= 4)
    43. {
    44. printf("请输入两个操作数:>");
    45. scanf("%d %d", &x, &y);
    46. printf("%d\n", pfArr[input](x, y));
    47. }
    48. else
    49. {
    50. printf("非法输入,请重新输入\n");
    51. }
    52. } while (input);
    53. return 0;
    54. }

  • 相关阅读:
    微头条展现量1.5亿,阅读量1075万,收益44000元
    Verilog编程中数据对齐问题_内插滤波器
    2.Rust变量
    “摸鱼”就能得出设计灵感?他的经验分享得看
    MyBatis-Plus多数据源——如何在一个项目中使用多个MySQL数据库
    数据中心网络设计思路图,数据中心网络设计方案
    C++语言的由来与发展历程
    Ubuntu 20.04 下 APT 安装 mysql-8.0 并配置 root 远程访问
    Python:实现merge insertion sort合并插入排序算法(附完整源码)
    浅谈中小企业的供应商管理
  • 原文地址:https://blog.csdn.net/2301_76197086/article/details/133357170
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号