首页 > 其他分享 >C语言 ——— 函数指针数组的讲解及其用法

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

时间:2024-07-24 19:59:50浏览次数:9  
标签:10 int ret C语言 pArr 数组 讲解 函数指针

目录

前言

函数指针数组的定义

函数指针数组的使用


前言

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

关于指针数组的知识请见: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);

 代码验证:

标签:10,int,ret,C语言,pArr,数组,讲解,函数指针
From: https://blog.csdn.net/weixin_55341642/article/details/140671173

相关文章

  • c语言(7.24)
    今天学习了指针的两个作用#include<stdio.h>voidgetmaxandmin(intarr[],intlen,int*max,int*min);intmain(){ //指针作用2: //函数返回多个值 //练习: //定义一个函数,求数组的最大值和最小值,并进行返回 intarr[]={1,2,3,4,5,6,7,8,9}; intlen=sizeof......
  • 【C语言】动态内存管理详解!!!
    目录为什么存在动态内存分配?动态内存函数的介绍常见的动态内存错误几个经典的笔试题 C/C++程序的内存开辟柔性数组为什么存在动态内存分配?在动态内存函数之前,我们知道的内存开辟有两种。1. 在栈空间上开辟四个字节。intval=20;2. 在栈空间上开辟10个字节的......
  • 2个月搞定计算机二级C语言——真题(1)解析
    1.前言大家好,我是梁国庆。这段时间将持续发布计算机二级C语言真题的解析,想要同步练习,需要资源包的朋友可以跳转免费获取——《3个月搞定计算机二级C语言——准备工作》。现在恐怕要改为2个月搞定计算机二级C语言了,不过没有关系,干就完了!本篇博客将解析计算机二级C语言......
  • 33.【C语言】实践扫雷游戏
    预备知识:第13篇一维数组 第13.5篇二维数组第28篇库函数 第29篇自定义函数 第30篇函数补充0x1游戏的运行:1.随机布置雷2.排雷基本规则:点开一个格子后,显示1,对于9*9,代表以1为中心的去心九宫格内有一个雷,找到后标记,直到标完所有的雷,游戏结束;如果中途点中雷,游戏结束......
  • RkAiq(Rk Auto Image Quality)模块讲解
    RkAiq模块是一个用于图像质量优化和处理的库,通常用于图像信号处理(ISP)框架中,特别是在摄像头应用中。RkAiq代表"RockchipAIImageQuality",它由Rockchip开发,旨在利用人工智能和先进的算法来提升图像质量。概述ISP30包含了一系列的图像处理算法模块,主要包括:暗电流矫正、坏点矫......
  • 【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
    目录C语言结构体(`struct`)详解结构体概览表1.结构体的基本概念1.1结构体定义1.2结构体变量声明2.结构体成员的访问2.1使用点运算符(`.`)访问成员输出2.2使用箭头运算符(`->`)访问成员输出3.结构体的初始化3.1结构体初始化输出3.2使用指定初始化器输出4.结构......
  • [c语言分支循环语句详解 -----选择结构、循环结构]
            c语言是结构化的程序设计语言,分为顺序结构、选择结构、循环结构。我们生活中的所有事情都可以用三种顺序结构表示。顺序结构顺序结构是C语言的基本结构程序由上而下运行,运行完上条语句再往下运行,平时写的程序基本都用到顺序结构。选择结构我们可以使用i......
  • 基于Java+SpringBoot+Vue的卓越导师双选系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • C语言代码实现——扫雷
    目录前言1扫雷游戏的分析和实现1.1扫雷游戏的功能1.2扫雷游戏的分析1.3完整代码2扫雷游戏的扩展2.1扫雷扩展的实现总结前言扫雷,相信大家都或多或少的了解这款游戏,本篇文章将分析这个游戏的设计思路,并用C语言代码来实现这个游戏。1扫雷游戏的分析和实现1.1......
  • 基于Java+SpringBoot+Vue的精品在线试题库系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......