==================================声明==================================

本文版权归作者所有。

本文原创,转载必须在正文中显要地注明作者和出处,并保证文章(包括本声明)的完整性。

未经作者授权请勿修改(包括本声明),保留法律追究的权利。

未经作者授权请勿用于学术性引用。

未经作者授权请勿用于商业出版、商业印刷、商业引用以及其他商业用途。

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。

本文链接:http://www.cnblogs.com/wlsandwho/p/4450221.html

=======================================================================

一直以来觉得函数指针和函数指针数组没什么,直到后来我才知道这些东西的

法,那就是让!你!看!不!懂!

=======================================================================

下面是我的示例小代码。

先祭上typedef版本的。

=======================================================================

函数指针

(用函数指针作为类型定义并初始化数组)

 #include <iostream>

 using namespace std;

 int MyFunc1(int p,int q){return p%q;}
int MyFunc2(int p,int q){return p/q;}
int MyFunc3(int p,int q){return p-q;} typedef int (*PMF)(int,int); int main()
{
PMF ArrPMF[]={MyFunc1,MyFunc2,MyFunc3}; int nRes;
nRes=ArrPMF[](,); cout<<nRes<<endl;
nRes=[ArrPMF](,); cout<<nRes<<endl; return ;
}

=======================================================================

函数指针数组

 #include <iostream>

 using  namespace std;

 int MyFunc1(int p,int q){return p%q;}
int MyFunc2(int p,int q){return p/q;}
int MyFunc3(int p,int q){return p-q;} typedef int (*PMF[])(int,int); int main()
{
PMF ArrPMF={MyFunc1,MyFunc2,MyFunc3}; int nRes;
nRes=ArrPMF[](,); cout<<nRes<<endl;
nRes=[ArrPMF](,); cout<<nRes<<endl; return ;
}

从知道C++这个东西到现在勉强能写两行代码,虽然这些年来我看过一些很玄幻的作品,但是猛然间看到

[ArrPMF](,);

我还是懵了好一阵子。实乃居家旅行杀人越货必备良品。

=======================================================================

如果没有良好的C/C++基础以及汇编基础外带触类旁通并且广泛联想的小脑袋瓜子,基本上可以“都放弃速度死”了。

(下面这行不是代码)

ArrPMF[1]==>*(ArrPMF+1)<==>*(1+ArrPMF)==>1[ArrPMF]

=======================================================================

万众期待的技(zuò)术(sǐ)版

Enjoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooy it!

 #include <iostream>

 using  namespace std;

 int MyFunc1(int p,int q){return p%q;}
int MyFunc2(int p,int q){return p/q;}
int MyFunc3(int p,int q){return p-q;} int (*ArrPMF[])(int,int)={MyFunc1,MyFunc2,MyFunc3};//当这行距离调用点十万八千里的时候,啦啦啦。 int main()
{
int nRes;
nRes=[ArrPMF](,);//感受下来自大宇宙的深深恶意
cout<<nRes<<endl; return ;
}

=======================================================================

很显然我没有,所以我写了这篇博客。

(其实这些在C++ primer plus之类的书中应该是有的吧。)

C++基础——函数指针 函数指针数组的更多相关文章

  1. C语言基础知识点整理(函数/变量/常量/指针/数组/结构体)

    函数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...

  2. [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数

    函数指针-指针函数 函数指针的重点是指针.表示的是一个指针,它指向的是一个函数.eg: int (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.eg: int* fun() ...

  3. C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数

    1昨日回顾 2 多态的练习-圆的图形 3多态的练习-程序员薪资 4员工管理案例-抽象类和技术员工的实现 employee.h: employee.cpp: technician.h: technici ...

  4. [C++ Primer Plus] 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组

    程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...

  5. 5_PHP数组_3_数组处理函数及其应用_3_数组指针函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组指针函数 1. key() 函数 程序: <?php $interests[2] = "mus ...

  6. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  7. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  8. PHP中使用数组指针函数操作数组示例

    数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素.默认是指向数组中第一个元素通过移动或改变指针的位置,可以访问数组中的任意元素.对于数组指针的控制PHP提供了以下几个内建函数可以利用. ★ ...

  9. C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组

    #include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...

  10. 指针数组vs数组指针 指针函数vs函数指针

    在分辨这些重要的概念时,我们先回顾一下前面所讲的C之三值合一,由于三个值所求出的地址是相同的,所以经常有传言说他们都是首元素的地址.这种说法是不正确的.为什么说它是不正确的呢? 首先定义一个指针,将三 ...

随机推荐

  1. unity3D-iOS工程整合爬过的坑~

    unity3D-iOS工程整合爬过的坑~ 好久好久没有写博了~ 最近换了一份有意思的新工作,也是当下最热门的新技术,AR技术.笔者之前一直是做iOS开发的,接触了一门全新的技术,兴奋了好久好久,笔者也 ...

  2. 异步IO比同步阻塞IO性能更好吗?为什么?

    最近在看node.js, 介绍中提到node是异步io的方式实现, 性能比同步阻塞io的更好. 对于一个request而言, 如果我们依赖io的结果, 异步io和同步阻塞io都是要等到io完成才能继续 ...

  3. 纯C#实现屏幕指定区域截屏

    以前在别的地方见过一个通过调用系统API实现屏幕截图的例子,从内心来说我不太喜欢在C#代码中出现这种情况,现在什么都讲“和谐”,我觉得这种做法就是破坏了我们的“和谐”代码,呵呵,开玩笑,有的时候,不通 ...

  4. C#基础-压缩文件及故障排除

    C#压缩文件可以使用第三方dll库:ICSharpCode.SharpZipLib.dll: 以下代码能实现文件夹与多个文件的同时压缩.(例:把三个文件夹和五个文件一起压缩成一个zip) 直接上代码, ...

  5. Myeclipse启动报错: Invalid 'log4jConfigLocation' parameter

    java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: class path resource [lo ...

  6. windows 下使用Nginx替代apache作为服务器

    说实话, 在windows下使用Nginx 着实有点不太方便, 但因项目需求, 又不想换系统(虽然可以搞个虚拟机玩), 只能用Nginx了 好了, 不多说了. 开始... 首先我用的是xampp包(A ...

  7. js的url解析函数封装

    在实际开发中,有些通过get方式与后台交换数据的时候,需要用到的数据在url中,因此就需要我们来获取到url中有用的信息,下面封装的函数已经可以将url解析的很彻底了,可以拿来直接用的: functi ...

  8. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  9. Android中的AlertDialog使用示例二(普通选项对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  10. C#操作Excell常用方法

    这是在博客园看的文章,写的很好,所以转一下,方便自己以后用到的时候可以随时查看. range.NumberFormatLocal = "@";     //设置单元格格式为文本 r ...