C++指向函数的指针

C++指向函数的指针做函数的形参 <br /><br />#include<iostream><br />#include<vector><br />#include<string><br />using namespace std;<br />int fun(const int);<br />//int fun(const int&,const int&);<br />int fun(int ,int);<br />string fun(const string,const string);<br />int fun(int ,int(* 阅读详情

函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。

int (*pi)(const string &,const string &);

这个语句将pi申明为指向函数的指针,它所指向的函数带有两个const string& 类型的形参和int类型的返回值。

*pi两侧的园括号是必须的:

int *pi(const string&,const string&);

这个语句声明了一个名为pi的返回值为bool*的函数。

1.使用typedef简化函数指针的定义

函数指针类型相当的冗长。使用typedef定义可以简化。

typedef bool (*pFunc)(const string&,const string&);

该定义表示pFunc是一种指向函数的指针类型的名字。该指针类型为“指向返回bool类型并带有两个const string引用形参的函数的指针”。在要使用这种函数指针类型时,只需要直接使用cmpFcn即可,不必每次都把整个类型声明全部写出来。

2.函数指针的初始化和赋值

在引用函数名但又没有调用该函数时,函数名将会被自动解释为指向函数的指针。假设有函数:

bool lengthCompare(const string &,const string &);

除了作函数调用的左操作数以外,对lengthCompare的所有操作将会被解释为如下类型的指针:

bool (*)(const string&,const string&);

可以用函数名对函数指针做初始化或者赋值:

pFunc p1=0;

pFunc p2=lengthCompare;

此时直接使用函数名等于在函数名上做取地址操作。

lengthCompare等于&lengthCompare

3.通过指针调用函数

pFunc pf=lengthCompare;

pf("hi","bbbbb");

或者(*pf)("hi","dfadsad");

4.函数指针形参

函数的参数是指向函数的指针,可以使用下面的方式来声明

void getCount(int cc,bool(string&,string&));

void getCount(int cc,bool (*)(string&,string&));

void getCount(int cc,bool (*pf)(string&,string&));

写函数的时候应该如下写

void getCount(int cc,bool (*p)(string&,string&))
{

}

5.指向重载函数的指针

C++允许使用函数指针指向重载函数:

指针的类型必须与重载函数的一个版本精确匹配,如果没有精确匹配的函数,则对该指针的赋值将导致编译错误。

extern void ff(vector<double>)

extern void ff(unsigned int)

void (*pf)(unsigned int)=&ff;          //ok,第二个

 

void (*pf1)(int) =&ff;                      //error,没有精确匹配

double (*pf2)(vector<double>)=&ff;              //error,返回类型不匹配

 

 

 

 


 

c++ 如何不用decltype获取一个函数指针的类型名 举例,假设函数是 bool compareIsbn(const string &s1,const string &s2); 那么如何获取指向这个函数指针的类型?我们在map中要用到这个类型,所以我们简单介绍下: typedef bool (*pf)(const string &s1,const string &s2); 注意:名字pf 一定要位于*之后 ... 阅读详情

相关推荐

VS Code配置Java开发环境避坑指南:从JDK到Spring Boot插件全流程

本文详细介绍了在VS Code中配置Java开发环境的完整流程,涵盖JDK选择、环境变量配置、核心插件安装、构建工具优化及Spring Boot项目专项设置。特别针对常见问题提供避坑方案,帮助开发者快速搭建高效稳定的开发环境,提升Java和Spring Boot开发效率。

weixin_28839699的博客 982

c++函数指针

函数指针函数指针基础知识深入探讨函数指针使用typedef进行简化 函数指针基础知识 1.完成函数指针需要的工作: 获取函数的地址 声明一个函数指针 使用函数指针来调用函数 1.获取函数地址:只要使用函数名即可。也就是说,如果think()是一个函数,则think()就是该函数的地址。要将函数作为参数进行传递,必须传递函数名。一定要区分传递的是函数的地址还是函数的返回值: process(think); thought(think()); process()调用使得process()函数能够在其内部调

weixin_50866517的博客 1万+

电流采样电路设计:差分放大与ADC采集详解

在电机控制、电源管理、电池监测等应用中,电流采样是一个关键环节。通常,我们使用小阻值的采样电阻将电流信号转换为电压信号,再通过运放放大后送入ADC进行采集。本文将详细分析一种基于差分放大器的电流采样电路,包括信号放大、参考电压偏置、滤波保护以及ADC转换计算等内容。

W0s477的博客 2万+

C++函数指针详解

详细的介绍了函数指针的使用方式。

韩小非的博客 4648

从零开始:手把手教你设计DP接口电路(含原理图实战)

本文是一份详尽的DisplayPort接口电路设计实战指南。文章从DP接口的核心架构与HDMI的差异讲起,手把手解析了高速差分对、AUX辅助通道、热插拔检测等关键模块的原理图设计要点,并提供了一个完整的DP Source端原理图实例,最后总结了PCB布局与信号完整性的核心考量,旨在帮助硬件工程师高效、稳定地完成DP接口电路设计。

transformer2023的博客 737

STM32f103--ADC配置

2.对于规则通道,选中EXTI线路11或TIM8_TRGO作为外部触发事件,可以分别通过设置ADC1和ADC2的ADC1_ETRGREG_REMAP位和ADC2_ETRGREG_REMAP位实现。注意: 在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。2.在某些双ADC模式中,在完整的ADC1数据寄存器(ADC1_DR)中包含了ADC1和ADC2的规则转换数据。通过设置ADC_CR2寄存器的ADON位可给ADC上电。

weixin_51864506的博客 5313

跟我学c++中级篇——函数指针

对C和C++中的函数指针进行一个整体上的总结分析和应用说明

fpcc的专栏 2522

利用自己的域名和cloudflare实现邮件转发(无限邮箱注册cursor使用账号) 保姆级图文

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!发现你走远了@mzh原创作品,转载必须标注原文链接欢迎关注『发现你走远了』 专栏,持续更新中欢迎关注『发现你走远了』 专栏,持续更新中『未完待续』

MZH 413

C++中的指向函数的指针

在C++编程中,指向函数的指针是一个强大而灵活的特性。它允许我们在程序运行时动态选择和调用函数,从而实现更高的代码复用和灵活性。本文将总结C++中指向函数的指针的概念、用法,并提供示例代码。

2301_77727857的博客 728

C#实现Socket通信同时监听多客户端(附完整源码)

C#实现Socket通信同时监听多客户端(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 427

034、MLCA 多尺度局部上下文注意力的 YOLOv11 适配:轻量级金字塔式空间上下文聚合

本文介绍了一种将多尺度局部上下文注意力(MLCA)模块集成到YOLOv11模型中的方法,以解决小目标检测中空间信息丢失的问题。MLCA采用金字塔式局部上下文聚合策略,通过不重叠的网格划分实现轻量级空间注意力计算,相比全局注意力机制能更好地保留小目标特征。 作者详细记录了实现过程,包括模块定义、参数调优和训练技巧,特别指出避免使用BN而改用GroupNorm以提升训练稳定性。在VisDrone数据集上的实验表明,MLCA-YOLOv11在参数量和计算量基本不变的情况下,mAP提升2.5%,其中行人检测提升3.

sundong_81的博客 279

C++指向对象成员函数的指针

指向对象成员函数的指针 对象的成员函数是一个函数,那么,我们可以定义一个函数指针,指向对象的成员函数。但是,该函数指针变量的定义,与普通的函数指针变量定义不同。 首先,我们先看看指向“普通函数”的指针变量的定义方法: 数据类型名 (* 指针变量名)(参数列表); 例如: void (*pf)(int); //定义函数指针pf,指向的函数是带有1个int类型的参数,并且,返回类型是void 所以,它可以指向一个函数,并通过函数指针调用该函数,如下: pf = func;...

LC的专栏 3507

【网络与爬虫 61】移动端App爬虫终极指南:Android-iOS应用数据提取黑科技全解析

本文全面解析移动端App爬虫技术,涵盖Android和iOS两大平台的数据提取方法。从基础的网络抓包到高级的代码注入,从自动化测试框架到反调试技术绕过,为开发者提供移动端数据采集的完整解决方案和实战经验。

熵数实验室 3029

【C++基础】Day 8:函数指针 VS 指针函数 | 指针常量 VS 指向常量的指针

本文系统梳理了C++中两类易混淆指针概念:1)函数指针与指针函数:前者是指向函数的指针变量,用于回调、函数表等;后者是返回指针的函数。区分关键看标识符最近的符号是*还是()。2)指针常量与指向常量的指针:前者指针不可改但内容可改,后者内容不可改但指针可改,const位置决定限制对象。文章通过定义解释、图表对比、代码示例和面试题分析,帮助读者清晰区分这些高频考点概念,掌握指针声明的阅读技巧和使用场景。

冰冻三尺非一日之寒 1613

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C/C++指针与数组、void指针、指针函数、指针数组、指向指针的指针

 指针是C/C++中的难点之一,本文列举一些复杂的指针内容。 指针与数组  这一点应该已经是常识了,一个数组的名字实际上就是一个指向该数组的起始位置的指针,这使得我们可以通过指针对数组进行操作: int a[] = {1,2,3,4}; int *p; p = a; //此时指针p就指向数组a的起始元素。 另外,在数组作为函数参数时, void func(int *p){} 和 void fu...

JosephJoestar 403

NTscan扫描工具

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

C++ 指向函数的指针

1、用typedef简化函数指针的定义 typedef bool (*cmpFcn)(const string &, const string &); cmpFcn p1;//p1是函数指针 2、函数指针形参 void useBigger(const string &s1, const string &s2, bool(*pf)(const string &, cosnt string &

梦幻DUO的游戏开发之路 498

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++中 指向成员函数的指针

Function pointers are a neat concept, since they basically allow the storage and passing around of functions. But when i was first experimenting with them, i had a hard time finding information about

personmy的专栏 1407

C++指向成员函数的指针

转载:http://www.cnblogs.com/tracylee/archive/2012/11/15/2772176.html C++指向函数的指针定义方式为: 返回类型 (*指针名)(函数参数列表),例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数。 而若想定义一个指向类成员函数的函数指针该怎么定义呢?对成员函数指针的使用。

sinat_35297665的博客 798

C++中返回指向函数的指针

C++中返回指向函数的指针     在C++中,函数的形参可以是指向函数的指针,函数也可以返回函数的指针。     例如:     int (*ff(int)) (int *,int);表示:ff(int)是一个函数,带有一个int型的形参,该函数返回int (*) (int *,int),它是一个指向函数的指针,所指向的函数返回int型并带有两个分别是Int*和int型的形参。

chenglinhust的专栏 1533

【C++】【指针】把指针传出去使用的函数,指向指针的指针

需求:在函数中 new 一个变量,并将其地址传出去给函数调用者使用。 今天在 coding 时遇到一个错误。我在 Ctrl 类写了一个成员函数 int init(Camera *p),并声明了一个成员变量 Camera *m_pC然后在该函数的定义中这么写的: int Ctrl::init(Camera *p) { m_pC = new Camera(); p = m_...

我是一只小小小小鸟 1674

如何理解C++中指向“函数指针的数组”的指针

c++中指向”指针的指针“的指针理解及举例应用。

safety_1404的博客 505

C++指向类成员函数的指针

C++指向类成员函数的指针 2010-01-14 13:32 3573人阅读 评论(6) 收藏 举报 c++funclass扩展c      最近在开发中用到了函数指针,于是想整理了一下有关函数指针的概念。O(∩_∩)O~      首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准

Stroller 599

【C++】指向函数的指针,指向重载函数的指针,指向类成员的指针

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

weixin_34050389的博客 218
上一篇: JSP返回的关键代码
下一篇: C++栈和队列
临江仙
博客等级 码龄16年 991粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值