C++基础——函数指针 函数指针数组
==================================声明==================================
本文版权归作者所有。
本文原创,转载必须在正文中显要地注明作者和出处,并保证文章(包括本声明)的完整性。
未经作者授权请勿修改(包括本声明),保留法律追究的权利。
未经作者授权请勿用于学术性引用。
未经作者授权请勿用于商业出版、商业印刷、商业引用以及其他商业用途。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。
本文链接: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++基础——函数指针 函数指针数组的更多相关文章
- C语言基础知识点整理(函数/变量/常量/指针/数组/结构体)
函数 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数
函数指针-指针函数 函数指针的重点是指针.表示的是一个指针,它指向的是一个函数.eg: int (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.eg: int* fun() ...
- C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数
1昨日回顾 2 多态的练习-圆的图形 3多态的练习-程序员薪资 4员工管理案例-抽象类和技术员工的实现 employee.h: employee.cpp: technician.h: technici ...
- [C++ Primer Plus] 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组
程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...
- 5_PHP数组_3_数组处理函数及其应用_3_数组指针函数
以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组指针函数 1. key() 函数 程序: <?php $interests[2] = "mus ...
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- PHP中使用数组指针函数操作数组示例
数组的内部指针是数组内部的组织机制,指向一个数组中的某个元素.默认是指向数组中第一个元素通过移动或改变指针的位置,可以访问数组中的任意元素.对于数组指针的控制PHP提供了以下几个内建函数可以利用. ★ ...
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
#include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...
- 指针数组vs数组指针 指针函数vs函数指针
在分辨这些重要的概念时,我们先回顾一下前面所讲的C之三值合一,由于三个值所求出的地址是相同的,所以经常有传言说他们都是首元素的地址.这种说法是不正确的.为什么说它是不正确的呢? 首先定义一个指针,将三 ...
随机推荐
- DX9入门笔记1-D3D初始化
对3D编程期待已久,却一直叶公好龙浅尝辄止.近期在公司实习却无具体的工作安排,琢磨着学习个新的手艺,就又想起了3D Programming.这次从大名鼎鼎的龙书(Introduction to 3D ...
- JS验证图片格式和大小并预览
用于上传图片的js验证: <%@ page language="java" contentType="text/html; charset=UTF-8"p ...
- 10.Configure One-to-Many(配置一对多关系)【Code-First系列】
现在,我们将学习怎么配置一对多的关系. Visit Entity Relationship section to understand how EF manages one-to-one, one-t ...
- LINQ to SQL语句(11)之Update
说明:更新操作,先获取对象,进行修改操作之后,直接调用SubmitChanges()方法即可提交.注意,这里是在同一个DataContext中,对于不同的DataContex看下面的讲解. 1.简单形 ...
- 异步编程系列第04章 编写Async方法
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- asp.net 301重定向代码
/// <summary> ///重定向代码 /// </summary> /// <param name="sender"></para ...
- 微信JSApi支付~集成到MVC环境后的最后一个坑(网上没有这种解决方案)
返回目录 大叔第一人 之前写了关于微信的坑<微信JSApi支付~坑和如何填坑>,今天将微信的jsapi支付封装到了MVC环境里,当然也出现了一些新的坑,如支付参数应该是Json对象而不是J ...
- JQuery的ajax
JQuery-AJAX: jQuery load() 方法是简单但强大的 AJAX 方法. $(selector).load(URL,data,callback);(这三个参数可以随意设置几个) @ ...
- python tornado websocket 实时日志展示
一.主题:实时展示服务器端动态生成的日志文件 二.流程: 1. 客户端浏览器与服务器建立websocket 链接,服务器挂起保存链接实例,等待新内容触发返回动作 2. 日志服务器脚本循环去发现新内容, ...
- 使用TabPageIndicator的样式问题
在使用TabPageIndicator往往会出现一些样式问题,导致看不到字,下面是总结的步骤: 1.布局<LinearLayout xmlns:android="http://sche ...