当前位置: 首页 > news >正文

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.lryc.cn/news/406742.html

相关文章:

  • 鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)
  • 设计App的后端接口分类以及环境依赖包详情
  • 接入百度文心一言API教程
  • classfinal太强了,再也不怕被反编译了
  • DP-适配器模式代码重新理解
  • minio安装小计一则
  • # Redis 入门到精通(九)-- 主从复制(1)
  • SpringBoot整合ElasticSearch的elasticsearch-java出现jakarta.json.spi.JsonProvider报错问题
  • git 操作汇总【迭代更新中】
  • 看 Unity 组件的源码 —— ILSpy
  • Axivion Suite 7.8现已发布
  • 从零开始!JupyterNotebook的安装教程
  • 使用kali进行端口扫描
  • C#使用Clipper2进行多边形合并、相交、相减、异或的示例
  • Spring-Aop源码解析(二)
  • antdesgin table 组件下载成excel
  • MongoDB - 聚合阶段 $group 的使用
  • Flutter 插件之 easy_refresh(下拉刷新、上拉加载)
  • DVWA的安装和使用
  • CSS相关记录
  • Fedora40安装telnet-server启用telnet服务
  • Unity3D结合AI教育大模型 开发AI教师 AI外教 AI英语教师案例
  • lua 游戏架构 之 SceneLoad场景加载(一)
  • 【linux深入剖析】命名管道 | 匿名管道与命名管道的区别 | system V共享内存
  • Vite 常用插件配置:自动导入+自动注册组件+动态创建图标+设置组件名
  • (leetcode学习)236. 二叉树的最近公共祖先
  • Zabbix监控系统:zabbix服务部署+基于Proxy分布式部署+zabbix主动与被动监控模式
  • 【Vue实战教程】之 Vue Router 路由详解
  • 测试用例接口开发实战
  • C#中压缩文件夹,及其内容