#include <stdio.h> int add(int, int);//声明四个具有相同参数类型的不同功能的函数 int sub(int, int);//这四个函数的返回值是int型的 int mul(int, int); int div(int, int); typedef int(*FP_CALC)(int, int);//定义了指向这类函数的指针FP_CALC,类型和这类函数的返回类型相同 FP_CALC calc_func(char op);//这个函数返回指向这类函数的指针 int calc(int a, int b, char op);//这个函数调用上面的函数 int main() { int a = 100, b = 20; printf("calc(%d, %d, %c) = %d/n", a, b, '+', calc(a, b, '+')); printf("calc(%d, %d, %c) = %d/n", a, b, '-', calc(a, b, '-')); printf("calc(%d, %d, %c) = %d/n", a, b, '*', calc(a, b, '*')); printf("calc(%d, %d, %c) = %d/n", a, b, '/', calc(a, b, '/')); return (0); } int calc(int a, int b, char op) { FP_CALC fp = calc_func(op); if (fp) return fp(a,b); else return -1; }//函数定义,调用calc_func(),返回操作符对应的函数指针,用函数指针来调用函数 FP_CALC calc_func(char op) { switch(op) { case '+': return add; case '-': return sub; case '*': return mul; case '/': return div; default: return NULL; } return NULL; }//这个函数返回操作符对应的函数名(也就是指向函数的指针) int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int div(int a, int b) { return b? a/b: -1; }//四个函数的定义

typedef 范例解析相关推荐

  1. 范例解析:学习Android的IPC主板模式

    一.认识Android的IPC主板模式 系统架构设计最关键的任务就是组合(或称整合),而且最好是能与众不同.深具创新性组合.Android就擅用了主板模式,以通用性接口实践跨进程的IPC通信机制.由于 ...

  2. android主板接口定义,范例解析:学习Android的IPC主板模式

    一.认识Android的IPC主板模式 系统架构设计最关键的任务就是组合(或称整合),而且最好是能与众不同.深具创新性组合.Android就擅用了主板模式,以通用性接口实践跨进程的IPC通信机制.由于 ...

  3. 链接/装载/运行(3)-目标文件内容解析

    声明:此内容是阅读<程序员的自我修养–链接,运行与库>而整理的学习笔记. 1 范例解析 1.1代码 /* SimpleSection.c** Linux: gcc -c SimpleSec ...

  4. 《深入理解NGINX 模块开发与架构解析》之摘抄学习

    1.基于Nginx框架开发程序有5个优势: (1).Nginx将网络.磁盘及定时器等异步事件的驱动都做了非常好的封装,基于它开发将可以忽略这些事件处理的细节; (2).Nginx封装了许多平台无关的接 ...

  5. 我希望支持JavaScript GraphQL实现的API

    The GraphQL schema language is great! It is certainly the best way to communicate anything about a G ...

  6. c++ 使用throw抛出异常

    抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常.该语句的格式为: throw 表达式;     如果在try语句块的程序段中(包括 ...

  7. 换种方法学操作系统,轻松入门Linux内核

    计算机已成为现代人日常工作.学习和生活中必不可少的工具.操作系统是计算机之魂,作为用户使用计算机的接口,它负责调度执行各个用户程序,使计算机完成特定的任务:作为计算机硬件资源的管理者,它负责协调计算机 ...

  8. 输出四位完全平方数_完全平方数中的规律

    PS:很近之前自己收集的资料 一个正整数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数,也叫做平方数. 如:0,1,4,9,16,25,36,49,64,81,100,121,144,16 ...

  9. JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式

    JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式 结构型:装饰器模式--对象装上它,就像开了挂 装饰器模式,又名装饰者模式.它的定义是"在不改变原对象的基础上,通过对其进 ...

最新文章

  1. 前 Google 工程师总结的算法面试指南
  2. 操作系统实验报告7:进程间通信—共享内存。实现一个带有n个单元的线性表的并发维护。
  3. POJ - 3565 Ants(二分图最小权匹配+KM+思维)
  4. 【J2EE设计模式】模型-视图-控制器模式(MVC模式)
  5. ols线性回归_普通最小二乘[OLS]方法使用于机器学习的简单线性回归变得容易
  6. centos7打开图形界面命令_centos7标准版(DVD)命令界面和图形界面相互切换
  7. 猫眼top前100电影爬取demo(正则初试)
  8. 1016 部分A+B (15 分)—PAT (Basic Level) Practice (中文)
  9. sympy 求微分方程_Sympy笔记一
  10. 修改屏幕分辨率比例,4*3拼接屏 21:9 比例,大屏项目拼接适配屏解决方案
  11. 复原 IP 地址(回溯)
  12. 【华为OD机试真题 JAVA】事件推送
  13. 车企号脉,资本试药,出行服务带病也要上场
  14. java斗地主发牌教学,QQ游戏“斗地主”规则说明
  15. mysql归档模式_数据库归档模式设置步骤
  16. 【NanoPi T2】 7.uboot gmac网卡驱动(3) - 驱动源码解析
  17. 在进行IBEACON定位时所应考虑到的误差与建议
  18. 【markdown】【xSliders | slidev | mindshow】markdown文档生成PPT/视频
  19. android系统电视机排行榜,智能电视机排行榜前十名
  20. GD32F30x系列ADC源码,对初学者参考价值巨大,(非常详细篇)万字源码

热门文章

  1. java 类型擦除_java中的类型擦除type erasure
  2. Spark实现WordCount的11种方式,你知道的有哪些?
  3. 实验报告一——网络侦查与网络扫描
  4. 7种内存泄露场景和13种解决方案
  5. EOSIO开发(七)- 使用CLion查看EOS代码
  6. 音乐播放,进度条,上一首下一首,暂停/播放
  7. 输入法pad版android,百度输入法pad版 for android 3.0
  8. java实现qlearning,DQN(Deep Q-learning)入门教程(一)之强化学习介绍
  9. 原生js实现select下拉框选择
  10. JavaScript 节点及层级操作