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

本文版权归作者所有。

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

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

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

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

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

本文链接: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. 用纯JS做俄罗斯方块 - 简要思路介绍(1)

    大家都知道俄罗斯方块是一款大众化的游戏了,我很小的时候就玩过,今年已经25岁了,可以说俄罗斯方块确实是历史悠久,做俄罗斯方块是我上个星期开始的想法.也许是由于自己从来没有写过这种东西吧,所以有生疏.代 ...

  2. 查看.NET Core源代码通过Autofac实现依赖注入到Controller属性

    一.前言 在之前的文章[ASP.NET Core 整合Autofac和Castle实现自动AOP拦截]中,我们讲过除了ASP.NETCore自带的IOC容器外,如何使用Autofac来接管IServi ...

  3. 【Win10开发】关于AutoSuggestBox

    其实看名字我们就知道,这个控件可以提供一些建议文本.我们在做搜索框时可以做一些文本来让用户选择. 这个控件有两个关键的事件QuerySubmitted和SuggestionChosen事件,当下拉列表 ...

  4. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  5. 图解DataGridView编辑列

    WinForm中DataGridView功能强大,除了可以自动绑定数据源外,还可以根据需求编辑列.下面以截图说明添加编辑列的步骤(HoverTreeSCJ 项目实际界面). 1.选择DataGridV ...

  6. 【Java每日一题】20161209

    package Dec2016; public class Ques1209 { public static void main(String[] args){ People g = new Peop ...

  7. Oracle 数据库基础学习 (八) PL/SQL综合练习

    1.定义游标:列出每个员工的姓名.部门名称并编程显示第10个到第20个记录. declare cursor zemp_cursor is (select temp.ename, temp.dname ...

  8. Hibernate —— 概述与 HelloWorld

    一.Hibernate 概述 1.Hibernate 是一个持久化框架 (1)从狭义的角度来讲,“持久化” 仅仅指把内存中的对象永久的保存到硬盘中的数据库中. (2)从广义的角度来讲,“持久化” 包括 ...

  9. python征程1.3(初识python)

    1.字典. 字典是python中的映射的数据类型,由键值对构成,几乎所有类型的python对象都可以用作键,不过一般还是以数字或是字符串最为常见.值可以是任意类型的python对象,字典元素用{}来包 ...

  10. HashTable(散列表)

    最近都在研究数据结构,关于hashtable,或者叫做散列表,过去一直不了解是什么东西,现在终于明白了. 所谓hashtable,就是某组key,通过某个关系(函数),得到一个与之对应的映射值(在计算 ...