C代码  
//#include<iostream.h>  
#include<stdio.h>  
  
typedef int (*FP_CALC)(int, int);  
//注意这里不是函数声明而是函数定义,它是一个地址,你可以直接输出add看看  
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;  
}  
//定义一个函数,参数为op,返回一个指针。该指针类型为 拥有两个int参数、  
//返回类型为int 的函数指针。它的作用是根据操作符返回相应函数的地址  
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;  
}  
//s_calc_func为函数,它的参数是 op,  
//返回值为一个拥有 两个int参数、返回类型为int 的函数指针  
int (*s_calc_func(char op)) (int, int)  
{  
     return calc_func(op);  
}   
//最终用户直接调用的函数,该函数接收两个int整数,和一个算术运算符,返回两数的运算结果  
int calc(int a, int b, char op)  
{  
     FP_CALC fp = calc_func(op); //根据预算符得到各种运算的函数的地址  
         int (*s_fp)(int, int) = s_calc_func(op);//用于测试  
         // ASSERT(fp == s_fp);   // 可以断言这俩是相等的  
     if (fp) return fp(a, b);//根据上一步得到的函数的地址调用相应函数,并返回结果  
     else return -1;  
}  
  
void 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, '/'));  
}   --------------------- 本文来自 蜗牛凯 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/arvin_kai/article/details/39555529?utm_source=copy

typedef 函数指针的使用(含例子)的更多相关文章

  1. C 中typedef 函数指针的使用

    类型定义的语法可以归结为一句话:只要在变量定义前面加上typedef,就成了类型定义.这儿的原本应该是变量的东西,就成为了类型. int integer;     //整型变量int *pointer ...

  2. C中typedef 函数指针的使用

    类型定义的语法可以归结为一句话:只要在变量定义前面加上typedef,就成了类型定义.这儿的原本应该是变量的东西,就成为了类型. int integer;     //整型变量int *pointer ...

  3. (转)typedef 函数指针的用法

    typedef 函数指针的用法   在网上搜索函数指针,看到一个例子.开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它.其实很多时候都 ...

  4. typedef 函数指针的用法

    转自:http://www.cnblogs.com/shenlian/archive/2011/05/21/2053149.html typedef 函数指针的用法 在网上搜索函数指针,看到一个例子. ...

  5. typedef 函数指针 数组 std::function

    1.整型指针 typedef int* PINT;或typedef int *PINT; 2.结构体 typedef struct { double data;}DATA,  *PDATA;  //D ...

  6. typedef函数指针那些事

    首先来介绍下函数指针: 函数指针是指向函数的指针变量,即本质是一个指针变量. int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f ...

  7. C++------------typedef 函数指针类型定义

    摘要bycrazyhacking:        typedef 是定义了一种"函数指针"类型,可以再声明很多变量.函数指针的定义是定义了一个变量. int max(int x,i ...

  8. typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针

    首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef myInt int: myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的 ...

  9. IOS typedef 函数指针的用法

    代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字. 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换. 用 ...

随机推荐

  1. matlab中求解线性方程组的rref函数

    摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det( ...

  2. PHP curl_getinfo函数

    curl_getinfo — 获取一个cURL连接资源句柄的信息 说明 mixed curl_getinfo ( resource $ch [, int $opt = 0 ] ) 获取最后一次传输的相 ...

  3. C#操作Access的查询、添加、删除、修改源程序

    C#操作Access的查询.添加.删除.修改源程序 using System; using System.Collections.Generic; using System.ComponentMode ...

  4. excel 中相乘函数

    excel  中相乘函数   “PRODUCT”并且是公式的框框,格式要是 常规,不能是文本

  5. jQuery 问题收集

    1.页面动态生成的dom元素,监听事件失效.需用事件代理进行监听. 对于动态绑定元素可以这样写 $(document).on('click', '.xxx', function() { // do s ...

  6. express中 使用session与cookie

    1.express如何使用session与cookie : https://www.jianshu.com/p/1839e482274e  或  https://www.cnblogs.com/chy ...

  7. [BZOJ1572] WorkScheduling

    中文题目:工作安排 原文题目:Work Scheduling 传送门 本题可以采用贪心 算法一:按工作时间排序,如果工作能按时完成的工作就按时完成,如果工作不能按时完成就把之前价值最小的工作和当前作比 ...

  8. Linux 下查看用户组信息

    1.id 通过id 可以直接查看到当前登陆用户的uid, group id , group name 等等.. 2.groups

  9. C#-Newtonsoft.Json生成复杂JSON

    官方文档:https://www.newtonsoft.com/json/help/html/SerializeObject.htm 一种方式就可以生成所有的 JSON Collection -> ...

  10. SpringBoot 配置相关热启动

    SpringBoot 配置相关热启动 参考网址1 参考网址2