C语言 ——— 函数指针数组的讲解及其用法

目录

前言

函数指针数组的定义

函数指针数组的使用


前言

数组是存放一组相同类型数据的存储空间

关于指针数组的知识请见:C语言 ——— 指针数组 & 指针数组模拟二维整型数组-CSDN博客

那么要将多个函数的地址存储到数组中,这个数组该如何定义呢?


函数指针数组的定义

把多个函数的地址存储到数组中,那么这个数组就叫函数指针数组

创建4个函数,实现整型类型的加减乘除:

int Add(int x, int y) // 加
{return x + y;
}
int Sub(int x, int y) // 减
{return x - y;
}
int Mul(int x, int y) // 乘
{return x * y;
}
int Div(int x, int y) // 除
{return x + y;
}

可以看出,这4个函数除了 函数名 和 函数内的运算符吧不同以外,参数和返回值都是相同的,那么即可定义一个函数指针数组,将这 4个函数存储到数组中

函数指针数组的定义: 

int (*pArr[4])(int, int) = { Add, Sub, Mul, Div };

代码解析:

pArr 先和 [4] 结合,代表 pArr是数组,去掉 pArr[4],剩下的就是数组的类型

int (*) (int, int) 就为 pArr[4]数组 的类型,表示的是 pArr[4]数组 的类型为:返回值是int,类型是(*),参数是(int, int)的函数


函数指针数组的使用

代码演示: 

	int ret = pArr[0](10, 5);printf("10 + 5 = %d\n", ret);ret = pArr[1](10, 5);printf("10 - 5 = %d\n", ret);ret = pArr[2](10, 5);printf("10 * 5 = %d\n", ret);ret = pArr[3](10, 5);printf("10 / 5 = %d\n", ret);

 代码验证:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中的依赖注入

目录 1.概述 2.构造函数注入 3.setter方法注入 4.接口注入 5.依赖注入框架 6.依赖注入容器 7.依赖注入框架的工作原理 8.依赖注入的优势 9.总结 1.概述 依赖注入是一种设计模式,它允许我们在不直接创建对象的情况下为对象提供其依赖项;它通过将…

云仓技术带来的物流变革影响

1、实时可视性: 云仓技术使物流公司能够实时跟踪和监控货物在供应链中的位置和状态。这种实时可视性提供了更好的货物追踪和管理能力,同时也提高了客户服务的质量。 ———————————————————— 2、仓储优化: 云仓技术可以…

从0开始搭建vue + flask 旅游景点数据分析系统(四):编写前端首页【数据驾驶舱】

本期我们编写数据驾驶舱页面(Dashboard)这个页面。主要任务是引入echarts 组件编写数据驾驶舱页面。 视频教程后续会更新在我的B站:https://space.bilibili.com/1583208775?spm_id_from666.25.0.0 推荐从教程第一集开始从零开始学习:https://blog.csdn…

实验室责任人员管理保障实训系统安全

在智慧校园的实训管理生态中,实验室责任人员的角色犹如精密机器中的关键齿轮,他们不仅是实验室安全与高效运转的守护者,更是实训教学质量的直接塑造者。这一角色的重要性,在智慧校园的数字化转型中得到了前所未有的凸显&#xff0…

Linux系统配置STM32的开发环境(代码编辑,编译,下载调试)

常见的stm32开发都是直接使用keil-MDK工具的,这是个集成开发环境,包含了代码编辑,编译,下载,调试,等功能,而且keil还是个图形化操作工具,直接可以点击图标案件就可以实现编译下载啥的…

Tableau入门|数据可视化与仪表盘搭建

原视频链接(up:戴戴戴师兄),文章为笔者的自学笔记,用于复习回顾,原视频下方有原up整理的笔记,更加直观便捷。因为视频中间涉及的细节较多,建议一边操作,一边学习。 整体介绍 可视化…

set,map(java)

前言:要了解set和map,首先需要对搜索树和哈希有一定的了解,才能进一步深入的了解set和map。 1.搜索树 (1)性质: 若它的左子树不为空,则左子树上所有节点值都小于根节点的值。 若它的右子树不…

【单机锁】实现原理

文章目录 1.互斥锁 sync.Mutex 的实现原理;1.1获取策略有如下两种:1.2sync.Mutex的方案1.2.1具体方案如下:1.2.2转换的条件:1.2.3运行的两种模式:1.2.4两种模式的转换条件1.2.5唤醒标识: 1.3源码走读 2. sy…

猫头虎分享:PyTorch异常ModuleNotFoundError: No module named ‘torch’解决方案

🐯 猫头虎分享:PyTorch异常ModuleNotFoundError: No module named ‘torch’解决方案 💻 摘要 在本篇博客中,我们将深入探讨如何解决PyTorch中常见的“ModuleNotFoundError: No module named ‘torch’”错误。通过详细的步骤指…

差分法求解 Burgers 方程(附完整MATLAB 及 Python代码)

Burgers 方程的数值解及误差分析 引言 Burgers 方程是一个非线性偏微分方程,在流体力学、非线性声学和交通流理论中有广泛应用。本文将通过数值方法求解带粘性的 Burgers 方程,并分析其误差。 方程模型 Burgers 方程的形式为: u t u u …

Jmeter下载、安装、永久汉化(Windows环境)

1、JDK下载 JDK8下载地址https://www.oracle.com/java/technologies/downloads/#java8-windows JDK8的Windows的64位: 2、Jmeter下载 jmeter下载地址https://jmeter.apache.org/download_jmeter.cgi 3、配置环境变量 安装好后,把jdk和jmeter都配置到…

Docker从入门到实践教程(电子版)

前言 Docker 是个伟大的项目,它彻底释放了虚拟化的威力,极大降低了云计算资源供应的成本,同时让应用的 分发、测试、部署和分发都变得前所未有的高效和轻松! 本电子书既适用于具备基础 Linux 知识的 Docker 初学者,也…

隧道可视化:实时监控保障行车安全

通过图扑可视化实现隧道的实时监控、数据分析及智能报警系统,提供全面的隧道管理和决策支持,提升行车安全,优化维护策略,确保交通顺畅。

【b站-湖科大教书匠】6 应用层 - 计算机网络微课堂

课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 6 应用层 6.1 应用层概述 6.2 客户-服务器方式和对等方…

PsExec横向:IPCPTHPTT

一.IPC下的PsExec 二.PTH下的psexec(CS操作) 三.PTT下的psexec PsExec工具: psexec 是 windows 下非常好的一款远程命令行工具。psexec的使用不需要对方主机开方3389端口,只需要对方开启admin$共享和ipc$ (该共享默认开启&#…

Spring boot 后端向前端发送日期时间发现少了8小时

问题 数据库 后端的控制台输出 前端控制台输出 可以发现少了8小时 问题 springboot 向前端响应数据是默认 Json 格式,所以会有类型转换,springboot 就通过 Jackson 来对 data 类型数据进行转换,但是Jackson 类型的时区是 GMT,与…

Google AI非坦途

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Pytorch框架之神经网络

一、全连接神经网络的整体结构 二、全连接神经网络的单元结构 找出一组w,b使得结果最优 三、常见激活函数 四、前向传播 学习率是指训练模型时每次迭代更新模型参数的步长。 五、梯度下降法 六、反向传播计算 七、总结 1、准备数据 2、搭建模型 3、开始训练(设置学习率、…

【TS】TypeScript中的接口(Interface):对象类型的强大工具

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript中的接口(Interface):对象类型的强大工具引言1. 接口的基本概念1.1 什…

【基于PSINS】UKF/SSUKF对比的MATLAB程序

UKF与SSUKF UKF是:无迹卡尔滤波 SSUKF是:简化超球面无迹卡尔曼滤波 UKF 相较于传统的KF算法,UKF能够更好地处理非线性系统,并且具有更高的估计精度。它适用于多种应用场景,如机器人定位导航、目标跟踪、信号处理等。…