【C++】函数指针
2023年8月18日,周五上午
今天在B站看Qt教学视频的时候遇到了
目录
- 语法
- 和typedef或using结合
- 我的总结
语法
返回类型 (*指针变量名)(参数列表)
以下是一些示例来说明如何声明不同类型的函数指针:
声明一个不接受任何参数且返回void的函数指针:
void (*ptr)();
声明一个接受一个整数参数且返回int的函数指针:
int (*ptr)(int);
声明一个接受两个整数参数且返回float的函数指针:
float (*ptr)(int, int);
声明一个接受一个字符串参数且返回void的函数指针:
void (*ptr)(const std::string&);
和typedef或using结合
使用类型别名typedef或using来定义函数指针类型,可以提高代码的可读性和灵活性。
此外,可以更方便地在多个地方复用同一类型的函数指针。
// 使用typedef定义函数指针类型
typedef void (*FunctionPointer)(int);// 使用using定义函数指针类型
using FunctionPointer = void (*)(int);
在上面的代码中使用了两种不同的方式来定义函数指针类型FunctionPointer,
它表示一个接受一个整数参数且返回void的函数指针类型。
然后,可以使用这个类型别名来声明函数指针变量:
#include<iostream>typedef void (*FunctionPointer)(int);using FunctionPointer = void (*)(int);void someFunction(int a){std::cout<<a<<std::endl;
}int main(){FunctionPointer ptr;ptr=someFunction;ptr(5);
}

我的总结
感觉函数指针就是给函数起别名:
通过创造一个和函数在返回值、参数列表方面一样的函数指针,
就可以通过声明一个这样的函数指针来指向该函数,
此后,就可以用这个函数指针的名字来调用该函数。
这不就是给函数起别名吗。
相关文章:
【C++】函数指针
2023年8月18日,周五上午 今天在B站看Qt教学视频的时候遇到了 目录 语法和typedef或using结合我的总结 语法 返回类型 (*指针变量名)(参数列表)以下是一些示例来说明如何声明不同类型的函数指针: 声明一个不接受任何参数且返回void的函数指针…...
VBA技术资料MF45:VBA_在Excel中自定义行高
【分享成果,随喜正能量】可以不光芒万丈,但不要停止发光。有的人陷入困境,不是被人所困,而是自己束缚自己,这时"解铃还须系铃人",如果自己无法放下,如何能脱困? 。 我给V…...
【Git】Git中的钩子
Git Book——Git的自定义钩子 Git中的钩子分为两大类: 1、客户端钩子:由诸如提交和合并这样的操作所调用 2、服务端钩子:由诸如接收被推送的提交这样的联网操作 客户端钩子: 提交工作流钩子 pre-commit:在提交信息前…...
java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发 em
Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显…...
Java # JVM
一、1.8之前 运行时数据区(进程共享) 运行时常量池为什么要有方法区: jvm完成类装载后,需要将class文件中的常量池转入内存,保存在方法区中为什么是常量: 常量对象操作较多,为了避免频繁创建和…...
vscode远程连接Linux失败,提示过程试图写入的管道不存在(三种解决办法)
vscode报错如下: 一、第一种情况 原因是本地的known_hosts文件记录服务器信息与现服务器的信息冲突了,导致连接失败。 解决方案就是把本地的known_hosts的原服务器信息全部删掉,然后重新连接。 二、第二种情况 在编写配置文件config时&…...
elaticsearch(1)
1.简介 Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引…...
使用pnpm workspace管理Monorepo架构
在开发项目的过程中,我们需要在一个仓库中管理多个项目,每个项目有独立的依赖、脚手架,这种形式的项目结构我们称之为Monorepo,pnpm workspace就是管理这类项目的方案之一。 一、pnpm简介 1、pnpm概述 pnpm代表performance npm…...
Ubuntu16.04-ros-kinetic环境搭建笔记=1=
tips:搬运资料,留个记录 安装Ubuntu Ubuntu官网下载地址 安装 虚拟机安装Ubuntu 最好断网安装Ubuntu,可以节约时间 Ubuntu基础设置 Ubuntu换国内源 换成清华源 sudo apt upgradeVMwareTool安装 把这个压缩包拖到桌面,否则只读…...
应用层自定义协议(组织数据的格式)
概念 在进行网络传输数据的时候,通常是将要传输的数据组织成一个字符串,再将字符串转换为一个字节流进行网络传输数据,而数据组织的格式是多种多样的,我们只需要保证,客户端和服务器对于字符串的组织和解析统一即可 现…...
5种常见的3D游戏艺术风格及工具栈
在游戏开发领域,3D 艺术风格已成为为玩家创造身临其境、引人入胜的体验的重要组成部分。 随着技术的进步,创造令人惊叹的 3D 视觉效果的可能性已经大大扩展,为游戏开发人员提供了广泛的选择。 在本文中,我们将探讨当今游戏开发中…...
【玩转Linux操作】crond的基本操作
🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔概述🍔命令⭐常用选项 🍔练…...
设置Linux 静态IP
LInux虚拟机默认的IP地址是动态获取的 作为服务器,我们一般还需要把IP地址设置为静态的 设置静态IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno # BOOTPROTOdhcp 动态获取 BOOTPROTOstatic IPADDR"192.16…...
JMeter接口自动化测试实例—JMeter引用javaScript
Jmeter提供了JSR223 PreProcessor前置处理器,通过该工具融合了Java 8 Nashorn 脚本引擎,可以执行js脚本以便对脚本进行前置处理。其中比较典型的应用就是通过执行js脚本对前端数据进行rsa加密,如登录密码加密。但在这里我就简单的应用javaScr…...
javascript期末作业【三维房屋设计】 【源码+文档下载】
1、引入three.js库 官网下载three.js 库 放置目录并引用 引入js文件: 设置场景(scene) (1)创建场景对象 (2)设置透明相机 1,透明相机的优点 透明相机机制更符合于人的视角,在场景预览和游戏场景多有使用…...
数组详解
1. 一维数组的创建和初始化 1.1 数组的创建 数组是一组相同类型元素的集合。 数组的创建方式: type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式,用来指定数组的大小 数组创建的实例: //代码1 int a…...
【记录COCO数据集格式】实例分割的annotations.json的内部格式
在此记录一下实例分割coco的annotations.json的格式 annotations.json,整体是一个字典: { "info": {"description": null,"url": null, "version": null, "year": 2023, "contributor": null, "date_created…...
mac 关于获取手机信息 终端指令
iOS真机命令(自动化测试) 获取设备的的UDID idevice_id --list # 显示当前所连接设备的 udid instruments -s devices # 列出所有设备,包括真机、模拟器、mac ideviceinfo 可以在返回的数据中找到 udid idevice_id -l 苹果手机 safari打开网…...
ios消息推送例子
通过Apple推送服务,将消息发送给特定的ios客户端,这是服务器端实例代码。需要客户端的voip key值,以及相应的客户端回调接口,支持ios9.0以上版本。 下载地址:https://download.csdn.net/download/m0_37567738/8821559…...
LabVIEW开发最小化5G系统测试平台
LabVIEW开发最小化5G系统测试平台 由于具有大量存储能力和数据的应用程序的智能手机的激增,当前一代产品被迫提高其吞吐效率。正交频分复用由于其卓越的品质,如单抽头均衡和具有成本效益的实施,现在被广泛用作物理层技术。这些好处是以严格的…...
京东自动评价工具:Python智能购物助手终极指南
京东自动评价工具:Python智能购物助手终极指南 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 想要轻松完成京东购物后的评价任务吗?jd_AutoComment 是一款基于Python开…...
别再死记硬背了!用Python脚本帮你自动生成CANopen PDO映射表(附源码)
用Python自动化生成CANopen PDO映射表的工程实践 每次面对密密麻麻的CANopen设备描述文件时,你是否也经历过这样的场景:深夜加班核对PDO映射参数,反复翻阅数百页的EDS文档,稍不留神就会把0x1800错配成0x1801。这种低效的手工操作不…...
开源AI智能体QClaw-Mimic:用个人数据微调大模型打造专属数字分身
1. 项目概述:一个能“模仿”你的开源智能体最近在GitHub上看到一个挺有意思的项目,叫QClaw-Mimic。光看名字,Mimic(模仿)这个词就挺抓人的。点进去一看,果然,这是一个旨在通过分析你的历史对话数…...
港大开源 【OpenHarness】 深度剖析:1.1 万行代码解构 Agent 架构,把黑盒变白盒
港大开源 【OpenHarness】 深度剖析:1.1 万行代码解构 Agent 架构,把黑盒变白盒 写在前面:香港大学数据科学研究所(HKUDS)开源的 OpenHarness 项目,上线两天斩获 1.9K Star,10 天突破 9.5K Star…...
Flowable工作流实战:手把手教你安全删除运行中的任务(附完整SQL与避坑指南)
Flowable工作流实战:安全删除运行中任务的完整指南 在业务流程管理系统中,Flowable作为一款轻量级的工作流引擎,因其高效的流程执行能力和灵活的扩展性而广受开发者青睐。然而在实际开发过程中,我们难免会遇到需要强制删除运行中任…...
通过Taotoken调用不同模型得到的响应质量符合预期
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken调用不同模型得到的响应质量符合预期 在集成大模型能力到实际业务时,开发者常常面临一个选择:…...
Banana Pi BPI-M2S边缘AI开发板:双千兆网口与5TOPS NPU实战指南
1. 项目概述:一块为边缘AI与网络应用而生的全能型单板计算机 最近在捣鼓一些边缘计算和轻量级网络服务的项目,一直在寻找一块性能足够、接口丰富,同时性价比又不错的开发板。市面上常见的树莓派4B固然经典,但在面对需要一定AI推理…...
BepInEx 6.0.0插件框架技术架构深度解析:IL2CPP签名耗尽问题的根源与解决方案
BepInEx 6.0.0插件框架技术架构深度解析:IL2CPP签名耗尽问题的根源与解决方案 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity游戏插件生态系统的核心…...
AI智能体技能库开发实战:从工具调用到系统集成
1. 项目概述:一个智能体技能库的诞生如果你正在研究或开发AI智能体,尤其是基于大型语言模型(LLM)的自主智能体,那么你一定遇到过这样的困境:智能体的核心能力,除了模型本身的理解和生成…...
PhonePi-MCP:基于MCP协议实现AI智能体自动化操控Android手机
1. 项目概述:当你的手机成为AI的“眼睛”与“双手” 最近在折腾AI智能体(Agent)时,我一直在思考一个问题:如何让这些运行在云端或本地电脑上的“大脑”真正地与现实世界互动?比如,让它帮我查一…...
