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

本文版权归作者所有。

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

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

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

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

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

本文链接: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. CClayer ignoreAnchorPointForPosition 参数的作用

    ignoreAnchorPointForPosition:忽略锚点对于位置的设定.即非位置的设定(比如说缩放),则不受此参数的控制. 并且默认情况下CCLayer的默认锚点是 中点,而不是左下角的点. ...

  2. 月经贴——.net前景何妨!

    已经从业7年了,除了.net什么也不会.思索.net前景也挺长时间了.很少人有主动改变的动力,边思索边在.net中沉迷.现在反应学.net的人越来越少了,而做企业的人还找不到做.net的.总是感觉现在 ...

  3. Android Studio实现APK的更新、下载、安装

    先不讲那么多看效果图: 下面来讲解一些更新CODE,原理大家都知道,不废话,直接上代码.里面有一些是我自己做的测试例子,所以大家可以直接删掉就好了 第一个:activity_main.xml < ...

  4. Concurrency in csharp (Asynchronous, Parallel, and Multithreaded Programming)

    http://stephencleary.com/projects/ /// <summary> /// /// </summary> public partial class ...

  5. js动态的把左边列表添加到右边,可上下移动。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 转载:《TypeScript 中文入门教程》 5、命名空间和模块

    版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变 ...

  7. 第 31 章 项目实战-PC 端固定布局[5]

    学习要点: 1.底部区域 2.说明区域 3.版权及证件区 主讲教师:李炎恢 本章主要开始使用学习用 HTML5 和 CSS3 来构建 Web 页面,第一个项目采用 PC 端固定布局来实现. 一.底部区 ...

  8. 【PHP夯实基础系列】PHP日期,文件系统等知识点

    1. PHP时间 1)strtotime() //日期转成时间戳 2) date()//时间戳变成日期 <?php date_default_timezone_set("PRC&quo ...

  9. Atitit利用反射获取子类 集合 以及继承树

    Atitit利用反射获取子类 集合 以及继承树 想从父类往下找子类的确是不可能的,要知道只要类不是final的话谁都有继承它的自由不需要事前通知父类. Eclipse实现不是重父类开始找而是重子类往回 ...

  10. 点击.box跟点击.box.box1

    <!DOCTYPE html> <html> <head> <meta charset='UTF-8'> <title>click</ ...