三种函数指针的表达以及函数指针概念讲解

  • 函数指针的概念
  • 三种表达函数指针的方法

函数指针的概念

如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针

三种表达函数指针的方法

接下来通过简单加法运算函数:int add(int a,int b)来演示其对应的函数指针类型来接收其函数地址,实现同样的功能。
1、声明函数类型
typedef int(typeFunc)(int,int)
【注】其中的typeFunc表示的是某种类型的函数
看待该表达式的个人理解:因为()的运算符优先级高,因此该表达式可以写成typedef (typeFunc) int(int,int)来理解。
表示p是函数返回值为int类型,参数为 (int,int)的函数类型。
函数指针变量表达:typeFunc *p;

#include<iostream>
using namespace std;
int add(int a,int b)
{return a+b;
}
typedef int (typeFunc)(int,int);
int main()
{typeFunc *p;p = add;p(1,2);return 0;
}

2、声明函数指针类型
借鉴1中所表示的函数类型的声明,函数指针类型,声明只是在1的基础上添加一个*号
*即typedef int(*typeFunc)(int,int);
函数指针变量表达:typeFunc p;

#include<iostream>
using namespace std;
int add(int a,int b)
{return a+b;
}
typedef int (*typeFunc)(int,int);
int main()
{typeFunc p;p = add;p(3,4);return 0;
}

3、定义函数指针
最为直接的方法:直接定义函数指针变量
int (*p)(int,int)*
函数指针变量表达: p

#include<iostream>
using namespace std;
int add(int a,int b)
{return a+b;
}
int (*p)(int,int);
int main()
{p = add;p(5,6);return 0;
}

三种函数指针的表达以及函数指针概念讲解相关推荐

  1. php函数有哪三种,【后端开发】php函数可以分为哪三种

    1.变量函数 变量函数又叫可变函数,php脚本在执行中会寻找与变量的值同名的函数并且去执行它,这样的好处是可以将不同的函数名称赋值给同一个变量,赋给变量那个函数名,在程序中使用变量名加上圆括号就调用那 ...

  2. 计算机网络按拓扑结构可分为三种基本型,2012年计算机三级网络技术基本概念与名词解释(3)...

    计算机网络的基本概念 112. 计算机网络:计算机网络是利用通信设备和线路将分布在不同地点.功能独立的多个计算机互连起来,通过功能完善的网络软件,实现网络中资源共享和信息传递的系统.计算机网络由资源子 ...

  3. Flink窗口全解析:三种时间窗口、窗口处理函数使用及案例

    我们经常需要在一个时间窗口维度上对数据进行聚合,窗口是流处理应用中经常需要解决的问题.Flink的窗口算子为我们提供了方便易用的API,我们可以将数据流切分成一个个窗口,对窗口内的数据进行处理.本文将 ...

  4. ASP.NET Core端点路由中三种让人困惑的路由函数

    早先提及了端点路由app.UseEndpoints, 端点路由强调的是端点和路由,其核心目的是将请求落地点与路由寻址方式解耦. <ASP.NET Core端点路由作用原理> 这里面有几个容 ...

  5. OpenCV(总结篇)图像逐像素访问(三种操作:指针、迭代器、at()函数)

    目录 概述 1.指针访问 2.迭代器访问 3.at()函数访问 总代码 效果 参考资料 概述 访问图像像素值是图像处理的基本操作.OpenCV提供了很多访问方式,比较常用的三种方式:  (1) 通过指 ...

  6. 函数指针三种定义与使用方式

    文章目录 函数类型剖析 通过什么来区分两个不同的函数? 函数指针(指向函数的指针) 函数指针三种定义方式 函数指针和指针函数的区别: 代码案例 函数类型剖析 通过什么来区分两个不同的函数? 一个函数在 ...

  7. C++函数的三种传递方式

    C++函数的三种传递方式为:值传递.指针传递和引用传递 值传递: void fun(int x){x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间 ...

  8. c语言函数的三种调用方式是什么?

    函数的三种调用方式:1.函数作为表达式中的一项出现在表达式中,例"z=max(x,y)":2.函数作为一个单独的语句,例"printf("%d",a) ...

  9. 浅谈js函数三种定义方式 四种调用方式 调用顺序

    在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Li ...

最新文章

  1. python对文件的读操作方法有哪些-Python文件操作实例大全
  2. 从Jenkins或Gerrit上获取拉代码和编译命令
  3. sql 查询 定义变量
  4. SQL Server 2008 性能测试和调优
  5. ADO.NET中SqlCommand对数据库操作
  6. ios PNG Crush error (PNG图片错误)
  7. Reddit程序员的酒后真言
  8. (41)System Verilog 例化System Verilog模块
  9. eslint常规语法检
  10. Notice: Undefined offset 的解决方法
  11. centos7 mysql读写监控,《Centos7——zabbix监控mysql的常规操作》
  12. JZOJ 4230. 淬炼神体
  13. 【MM32F5270开发板试用】基于MindSDK对接雨滴传感器
  14. html中如何写平方根等,开方符号 数学符号平方根号等怎么输入
  15. android应用商店升级标准,五大应用商店宣布:共同推进安卓APP升级64位架构
  16. 关于 web cam 使用自家的摄像头实现 视频捕捉技术 高级篇
  17. 接班人不是克隆出来的:华为再显接班难
  18. [野狐行][辅助开发系列课程][2016/4/7][门外系列更新完毕]
  19. 【19】简单、通用、详细---PCIEAER的蒙代尔不可能三角,怎么禁止AER的firmware first mode
  20. 商业银行清算业务(一)

热门文章

  1. Pr:导出设置之管理显示色域体积及内容光线级别
  2. Long-Short Term Memory(长短时记忆模型)
  3. c++ 11 原子操作库 (std::atomic)(一)
  4. ZEMAX中的非球面参数解释
  5. FusionCharts Suite XT
  6. MPLS XXX工作过程
  7. oc数组中是否包含某个元素
  8. Ionic初学之Ionic3(Cordova)插件制作与添加
  9. Android系统反编译FrameWork层虚拟定位方法
  10. Collections的copy()方法和ArrayList的大小问题