温故知新:函数指针

C/C++函数指针完全指南:从​​typedef​​到函数指针数组 本文系统讲解了C/C++中函数指针的三种定义方式及其应用。首先介绍了函数名即地址的核心概念,然后详细解析了三种定义方法:typedef函数类型、typedef函数指针类型和直接定义函数指针变量。特别强调了typedef定义函数指针类型的实用性,并展示了如何通过函数指针数组高效管理多个功能相似的函数。最后通过完整代码示例演示了各类定义方式的具体用法和运行效果,为读者提供了清晰的学习路径和实践指导。 阅读详情

我一直以为只能直接调用函数指针,今天看代码发现一个对函数指针解引用的操作,一下子以为是我记错了,回头测试了一下结果发现两种写法都可以。。是在下孤陋寡闻了。。

int func() {
    return 1;
}

typedef int(*pfunc)();
int main() {

    pfunc pf = func;
    int aa = (*pf)();
    int bb = pf();
    int cc = func();
    cout << "aa:" << aa << endl << "bb:" << bb << endl << "cc:" << cc <<endl;
    return 0;
}

第9行、第10行和第11行的代码调用都能正确使用func函数。

那他们到底有什么区别呢?只能看汇编。

可以看出来,至少在汇编层面上,直接调用函数指针 和 解引用使用函数指针确实是没有区别的。

另外一点,按理说pf指向func,但是在监视窗口内pf的值和func的值却不一样。啊,我确实是有点笨拙了。。

那就再跟一下地址看看情况,下面我们跳到[ebp - 8]:

那这里可以看出来了,当你让函数指针指向一个函数,他所指向的实际上不是你那个函数的地址,而是一个类似函数表的地方,当线程运行到此处时他通过二次跳转最终来到函数地址。

IEEE 754浮点数与十六进制转换:从原理到实战避坑指南 在计算机系统中,数据的二进制表示与内存布局是底层开发的核心基础。IEEE 754标准定义了浮点数在内存中的精确格式,包括符号位、指数位和尾数位的分工,以及零、无穷大和NaN等特殊值的编码。理解这一原理对于处理原始字节流至关重要,尤其是在涉及跨平台或跨设备通信时。其技术价值在于,它能帮助开发者从根本上解决数据解析错误、通信协议不一致以及程序调试中的“灵异”问题。在嵌入式开发、网络通信(如Modbus协议)和固件解析等应用场景中,浮点数与十六进制的转换是高频操作。然而,字节序(大端/小端)是转换过程中最常见的“ 阅读详情

相关推荐

阿里云人工智能工程师ACA认证免费课程学习笔记

阿里云人工智能工程师ACA认证免费课程学习笔记

engchina的专栏 2014

C 温故知新 之 指针:函数指针变量、指针型函数

  猛一看还真有点糊糊;注意区别:     1、函数型指针:指函数返回值的类型。       指针型函数:返回值是一个指针(即地址)     2、int(*p)()和int *p() 是一样吗?为什么?      int (*p)()是一个变量说明,说明 p 是一个指向函数入口的指针变量,该函数的返回值是整型量,(*p)的两边的括号不能少。 -->函数型指针      ...

weixin_30256901的博客 214

SAP LSMW保姆级操作文档

SAP LSMW(Legacy System Migration Workbench)是一个强大的工具,旨在简化旧系统数据向SAP系统的迁移过程。它允许用户通过多种方式导入数据,包括直接输入、批处理输入和BAPI。LSMW支持数据映射和转换,确保数据在迁移过程中保持一致性,减少手动输入的需求,从而提高效率,适用于新系统实施和数据更新项目。在日常运维过程中我们经常会遇到用户要求我们批量改一写数据,通常这些字段的信息有些SAP是提供程序可以批量进行更改的比如主数据的MM17、通用更改数据的MASS。

我小时候很黑的博客 4960

C 温故知新 之 指针:数组指针、字符串指针、函数指针

一、数组指针 1.指向数组元素的指针   1、定义:还是那句话通俗的说指针就是地址       数组指针:数组的起始地址     数组元素指针:数组元素的地址   2、定义一个指向数组元素的指针变量的方法,与之前介绍的指针变量相同。     例如:      int a[10]; /*定义 a 为包含10 个整型数据的数组*/     int *p;...

weixin_30885111的博客 121

疾病负担研究(GBD)介绍

今天我们来聊一聊第一个公共数据库——GBD数据库,全称叫做global burden of disease(全球疾病负担),该数据库每年都会更新,目前已经更新到GBD2019。 这里直接给大家贴出网址:Global Burden of Disease Study 2019 (GBD 2019) Data Resources | GHDx 上图中红色圈圈标识的就是数据库的数据获取界面的链接,大家直接点击即可. 数据的检索十分方便: Context下拉菜单中可以选择不同的选项,默认是caus

weixin_44240228的博客 1万+

第六章 汇川技术InoProShop入门之modbusTCP从站协议解读

摘要:ModbusTCP从站协议是Modbus协议在TCP/IP网络上的扩展,作为服务器端被动响应主站请求。它采用MBAP+PDU帧结构,通过IP地址和502端口实现网络通信,支持标准功能码(如读/写寄存器、线圈)。相比传统串行Modbus,具有高速传输、远距离通信优势。从站需解析请求、执行操作并返回响应,同时处理错误校验和并发连接。该协议广泛应用于智能传感器、PLC等工业设备,实现高效可靠的主从数据交互。

zyfucking2010的博客 1439

【C++拾遗】详解C++中的函数指针

函数也有地址,指向函数的存储地址的数据类型为函数指针,在存储机器语言代码的内存块中,函数指针指向这个函数的内存块的开始地址。利用函数指针,我们可以使用一个函数找到另一个函数,亦或者让函数成为另一个函数的变量。那为什么不直接使用函数调用呢?因为函数调用的代码是写好的,只能调用那一个固定的函数,但是函数指针如果作为一个变量来使用的话,可以传入不同的值,即可以选择使用不同的函数。 获取函数指针 函数名(...

超级超级小天才的博客 270

生物信息学投稿避坑指南:如何根据影响因子和审稿速度选择最适合的期刊

本文为生物信息学研究者提供全面的期刊投稿策略,重点解析影响因子、审稿速度等关键指标,帮助选择最适合的期刊。涵盖算法开发类和应用型研究的投稿路径,分析不同出版社特点及开放获取的利弊,并提供投稿全流程优化建议,助力高效发表研究成果。

weixin_42652674的博客 380

函数指针

函数指针 之前经常见到这样的代码: typedef int (*Func)(int a ,int b); 一开始不知道这是什么意思,每次翻阅资料和各位大牛博客之后一目了然,但是过了一段时间又忘记了,归根结底是当时学C的时候就没有重视这基础,再加上后来练习的越来越少,更是蒙了。 于是记录在这里自己的想法,以后...

小时候挺菜的博客 102

从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程

本文是《从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程》亲自实操可用,本文从PXE是什么?有啥用?及其亲自实践出通过以国产银河麒麟系统为例从零到一的搭建出PXE服务器端(适用于其他系统),且测试了该搭建的PXE服务端自动化无人值守安装系统的保姆级实操教程。适用于大批量设备系统安装部署场景。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 584

YOLO11优化:原创自研 | 低对比度场景 | 平滑的 CIoU,对其惩罚项(中心点距离和长宽比差异)进行平滑

为了应对上述挑战,我们需要一个对边界框定位误差更具容忍度的 IoU 变体。我们的核心思想是:在 CIoU 的基础上,对其惩罚项(中心点距离和长宽比差异)进行平滑处理

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 536

【温故知新】C语言学习--C指针

温故知新:记录博主对于C语言指针的新认识

2301_79519192的博客 384

AI爬虫:一文讲通AI爬虫技术和原理,及34个AI爬虫工具推荐

AI 爬虫 是一种结合了传统网络爬虫技术和人工智能(AI)技术的工具,能够更智能、高效地从网页中提取和处理数据。与传统爬虫相比,AI 爬虫能够更好地处理动态内容、复杂网页结构以及非结构化数据,同时具备数据清洗、分类、情感分析等高级功能。

数据知道的博客 1万+

冒泡排序思想 + 函数指针数组(qsort排序思想 )实现【通讯录】多种排序方式

利用冒泡排序、qsort排序思想,结合结构体指针、结构体传参、字符串比较、回调函数(函数指针)、函数指针数组知识实现通讯录多种排序方式。

weixin_45389997的博客 1086

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【C++温故知新】(四)函数

函数基础 函数的定义 typeName functionName(parameterList) { statement; return value; } 函数有多个参数,使用逗号间隔。 函数在执行完第一个 return 语句后结束,如果返回值是void,可以直接使用 return; 或者不写返回语句。 函数原型 函数原型描述了函数到编译器的接口,需要写在main函数前边,通常放在头文件引用后。函...

超级超级小天才的博客 544

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C的温故知新

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34272308的博客 84

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温故知新之C++类

在C++中,使用class关键字来定义一个类。public:// 公有成员变量和成员函数// 函数体private:// 私有成员变量和成员函数// 函数体protected:// 受保护成员变量和成员函数// 函数体定义:虚函数是指在某基类中声明为virtual,并在一个或多个派生类中被重新定义的成员函数。virtual 函数返回类型 函数名(参数表) {函数体};作用:虚函数的主要作用是实现多态性(Polymorphism)。

浩瀚之水的专栏 1308

【温故知新】C#委托delegate

在c#的学习过程中,学到委托与事件总会迷糊一段时间,迷糊过后自然而就似懂非懂了~,所以最近我打算把以前所学的迷糊过的知识总结,温故知新,总结记录下来。 首先,我们来看一下msdn对委托的定义: delegate关键字用于声明可用来封装命名方法的引用类型。委托大致类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。 delegate可让您传递一个函数作为参数。委托的类型安全要求...

weixin_33738555的博客 135

C++11 温故知新

0 目录1 decltype && auto2 返回值类型后置3 using && typedef4 lambda匿名函数5 for循环6 constexpr7 右值引用8 移动构造函数9 move()函数:将左值强制转换为右值10 完美转发11 智能指针11.1 shared_ptr11.2 unique_ptr11.3 weak_ptr附录 1 decltype && auto decltype (declare tpe) 和 auto 一样都是在编译期

bigchen 683

温故知新之虚函数原理

<br /><br />温故知新啊,工作容易功利,忘记原理。PS:此兄技术博客品质不错。<br /> <br /> <br />C++ 虚函数表解析<br /> <br />陈皓<br />http://blog.youkuaiyun.com/haoel<br /> <br /> 前言<br /> <br />C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技

岁月留痕 836

温故知新之委托

一、委托——一种在对象里保存方法引用的类型,一种类型安全的函数指针; 优点:1、压缩调用匿名方法;2、合理的使用委托可以提高程序性能 声明:public delegate type_of_delegate delegate_name () 形式来声明   eg:public delegate void Delegate_Multicast(int x,int y);   注:1、遵循和声...

weixin_30809173的博客 64

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 255
上一篇: 功能错误 or 设计错误?远控项目里我这样看
hx___y
博客等级 码龄6年 5粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值