我们能够创建一个指向函数的指针数组。为了选择一个函数,只需要使用数组的下标,然后间接引用这个指针。这种方式支持表格式驱动码的概念;可以根据状态变量去选择被执行函数,而不用条件语句或case语句。这种设计方式对于经常从表中添加或删除函数(或者想动态的创建或改变表)十分有用。

#include <iostream>
using namespace std;
#define DF(N) void N() { \cout << "function " #N " called ..." << endl;}DF(a);
DF(b);
DF(c);
DF(d);
DF(e);
DF(f);
DF(g);void (*func_table[])() = { a, b, c, d, e, f, g };
int main()
{while (1){cout << "press a key from 'a' to 'g'""or q to quit" << endl;char c, cr;cin.get(c);cin.get(cr);if (c == 'q')break;if (c < 'a' || c > 'g')continue;(*func_table[c - 'a'])();}system("pause");
}

转载于:https://www.cnblogs.com/yongssu/p/4362280.html

指向函数的指针数组(C++)相关推荐

  1. C七:指向函数的指针 ------ 函数指针(function pointer)

    函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码.一个函数的地址是该函数的进入点,也是调用函数的地址.函数的调用可以通过函数名,也可以通过指向函数的指针来调用.函数指 ...

  2. 指向函数的指针--转

    http://book.51cto.com/art/200908/146363.htm 5.1.2 指向函数的指针 C语言通过&和*操作符来操作数据的地址,但它并没有提供一个用一般的方式来操作 ...

  3. 【C/C++学习】之七、指向函数的指针

    什么是指向函数的指针 函数指针是指向函数的指针变量,不是指向对象的指针!函数指针本身应该是"指针变量": "在C语言中,函数本身不是变量,但可以定义指向函数的指针,这种指 ...

  4. 指向函数的指针 - C语言

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1368947400.html 基本概念 ...

  5. C语言学习笔记---指向函数的指针

      在内存中函数的存放也是一段连续的内存,函数名就是指向改内存中的首地址,所以也可以将这个函数的首地址赋给一个指针变量,这样通过指针变量就可以访问改函数.   那么为什么要通过指针来访问函数呢?下面通 ...

  6. c语言handler指针,typedef与指向函数的指针结合的妙用

    今天看到keil的一个例子,里面涉及到利用typedef和指向函数的指针结合的例子,使得程序结构体系非常明了,觉得很好,特地记下来. 首先在头文件定义了这个指针,并用typedef将其声明为一个类型: ...

  7. 指向函数的指针 ------ 函数指针(function pointer)

    函数具有可赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码.一个函数的地址是该函数的进入点,也是调用函数的地址.函数的调用可以通过函数名,也可以通过指向函数的指针来调用.函数指 ...

  8. 八大排序 详解(下)——指向函数的指针 的使用

    <八大排序 详解(上)> <八大排序 详解(中)> 紧接前两篇博文,我们这篇博文所要讲解的是我们前两篇博文编写的所有函数的使用.生成随机数组的函数的讲解以及一种及其凶悍的调用方 ...

  9. 【C语言】函数指针(指向函数的指针)

    文章目录 1. 函数指针的定义 2. 函数指针的定义形式 2.1 一般定义方法 2.2 加上typedef关键字的定义 3.利用函数指针调用其所指向的函数 3.1 情况1:一般调用 3.2 情况2:函 ...

最新文章

  1. Pytorch张量tensor的使用
  2. biztalk 2010 映射
  3. Win7和Win10安装VC6.0注意事项
  4. Android开发技术周报 Issue#81
  5. 牛客 - Sixth Sense(贪心+二分)
  6. 十大经典数据挖掘算法:EM
  7. 微软发布ReactXP:方便开发者构建跨平台应用
  8. 你不知道的JavaScript-0
  9. [翻译] RDVTabBarController
  10. 程序员|那天下班回家,突然民警叫住我....
  11. 从Richard Young教授的系列研究看超级增强子发现背后的故事 (附超级增强子鉴定代码)
  12. 你知道这5年我怎么过的吗!谈谈我做测试开发的这些年……【总结】
  13. HDU 2181 哈密顿绕行世界问题
  14. 微信公众平台可为市民鉴别万余药品真伪
  15. 数据分析实战项目练习——餐厅订单数据
  16. Lenovo Quick Fix:关闭或开启Win10系统的自动更新
  17. 23种设计模式--桥接模式(Bridge)
  18. 形容java工作者的句子_一些形容工作态度的句子
  19. piblic class 和class的区别
  20. 【C++游戏引擎Easy2D】Random随机数,不同于Rand,做游戏必备

热门文章

  1. Bezier(贝塞尔)曲线(三阶)的轨迹规划在自动驾驶中的应用(四)
  2. python伪装浏览器什么意思_python爬虫伪装浏览器出现问题求助
  3. python函数实例化_Python中的__new__()方法与实例化
  4. python 协程 php,python3.x,协程_python协程练习部分代码的理解?,python3.x,协程,asyncio - phpStudy...
  5. linux中dump文件怎么生成,linux下设置core dump文件生成的方法
  6. 微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知
  7. macOS 使用手册
  8. python assert_python assert使用说明
  9. jQuery ajax模板及各参数介绍
  10. Python调用Java代码部署及初步使用