一、函数指针数组

1.1函数指针数组的声明

函数指针数组的声明如下,所谓函数指针数组就是在之前的函数指针的基础上增加了[],由于[]的优先级高于*,故 pf先与[]结合,说明它是一个数组,再与*结合说明数组中的元素的类型是指针,再看后面的参数列表,说明每一个指针都指向一个函数的入口地址,并且指向的函数的返回类型为int。

int (*pf[])(int, int);

1.2函数指针的使用

以下代码展示了函数指针数组的一个简单的应用。

#include <stdio.h>int Add(int x, int y)
{return x + y;
}int Sub(int x, int y)
{return x - y;
}int main()
{int a = 10;int b = 20;//定义一个有2个指针的数组,指针指向一个函数,该函数有两个整型参数并返回一个整型数int(*p[2])(int, int);p[0] = Add; //函数指针数组的第一个元素指向Add函数p[1] = Sub;printf("%d, %d\n", p[0](a, b), p[1](a, b));system("pause");return 0;
}

二、指向函数指针数组的指针

在此,仅作介绍,它也叫函数指针数组的指针。下面的定义怎么理解呢?首先,p和*结合说明是一个指针,之后与[]结合,说明是一个数组指针,再与*结合说明用一个指针指向了数组指针,之后又指向了一个函数的入口地址,该函数有两个int类型参数,返回值是int。

int (*(*p)[])(int, int);

总而言之,指向函数指针数组的指针就是在函数指针数组的基础上,再加一个*表示一个指针去指向它。当然,既然有函数指针数组的指针,则必然还有函数指针数组的指针数组,只不过一般的编程用到的情况很少,如果读者有兴趣的话,可以去研究一下。

【C语言】函数指针数组和指向函数指针数组的指针相关推荐

  1. 图解C语言中数组指针、指针数组、函数指针、函数指针数组、指向函数指针数组的指针

    关于C语言中数组指针.函数指针.指针数组.函数指针数组.指向函数指针数组的指针一直比较绕,稍微整理一下. 到底是指针还是数组? 其实到底是指针还是数组还是看变量名与[]先结合还是*先结合.我们知道C语 ...

  2. c语言handler指针,typedef与指向函数的指针结合的妙用

    今天看到keil的一个例子,里面涉及到利用typedef和指向函数的指针结合的例子,使得程序结构体系非常明了,觉得很好,特地记下来. 首先在头文件定义了这个指针,并用typedef将其声明为一个类型: ...

  3. 指针详解(包含指针,指针数组,数组指针,指向数组指针的指针,函数指针,函数指针数组,指向函数指针数组的指针)

    大家都知道,指针有双面性,灵活度高,但是运用时一定要避免野指针和空指针的出现.否则会出现一些意想不到的错误.话不多说,看下面的代码: int main() {int arr[10] = { 0 };/ ...

  4. 深入理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针

    指针数组 表达式为:int *p[5] 理解:下标运算符[ ]的优先级是要高于指针运算符*,因此p先和下标运算符结合,决定了p首先是个数组,其类型int *,表明数组的元素都是都是指针.而数组占多少个 ...

  5. C语言指针的那些事:第三篇(函数指针,指针函数,函数指针数组,指向函数指针数组的指针)

    文章目录 1. 函数指针 1)函数指针的例题 2. 指针函数 3. 函数指针数组 1)函数指针数组的用途 4. 指向函数指针数组的指针 5. 一些后话 1. 函数指针 函数指针就是指向函数的指针:本质 ...

  6. c语言:数组指针,指针数组,函数指针,函数指针数组,指向函数指针数组的指针

    指针是一种保存变量地址的变量.在c语言中,指针的用途十分广泛,而其与数组和函数的关系也十分密切.下面我们来简单介绍一些指针的应用. 1.指针数组 指针数组:首先它是一个数组,这个数组中的内容都是指针变 ...

  7. 指针数组,数组指针,函数指针,函数指针数组 ,指向函数指针数组的指针

    首先有个问题:指针和数组有什么关系呢? 答案:什么关系都没有. 指针就是指针,在32位平台下,永远占4个字节,其值为某一个内存的地址. 数组就是数组,其大小与元素的类型和个数有关.定义数组时必须指定其 ...

  8. 指针数组,数组指针,存放数组指针的数组,指向存放数组指针数组的指针,函数指针,函数指针数组,指向函数指针数组的指针

    数组: 一组数据的集合称为数组,它所包含的每一个数据叫做数组元素,例如 int a[4]: 它定义了一个长度为4的整型数组,名字是a . 一般的定义数组可以用 :数据类型 数组名 [数组长度]:来声明 ...

  9. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参

    1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...

最新文章

  1. 2021年大数据Kafka(二):❤️Kafka特点总结和架构❤️
  2. Huffman 编码压缩算法
  3. [PPOPP 15] PoweSwitch: 基于同步异步切换的分布式大规模图处理系统 学习总结
  4. 视频会说话:神策智能运营,让你半小时搞定一次活动!
  5. 开发者的利器:Docker 理解与使用
  6. 怎么删除计算机管理员用户密码,小编手把手教你Win10系统如何删除管理员账户密码...
  7. ubuntu mysql混合开发_mysql5.7主从同步 ubuntu
  8. linux基础服务,Linux基础
  9. o oia ospf 路由优先_CCNP理论之OSPF协议(二)
  10. JavaScript中的call,apply,bind学习总结
  11. ARM太贵,80多家科技巨头悄然站队开源芯片架构RISC-V
  12. 42表盘直径是从哪测量_万用表测量电容容量的方
  13. C语言学习资料教程 | 免费下载
  14. unity旗帜飘动shader
  15. 微信小程序使用腾讯地图进行路线规划,坐标转地址,逆地理编码,计算目的地跟自身定位的距离
  16. 批量生成图片的数据增强常用的脚本
  17. 微信小程序图片轮播+预览效果实现
  18. 通过Python爬取QQ空间说说并通过Pyechart进行可视化分析
  19. tf24: GANs—生成明星脸
  20. 阵列天线相位加权 matlab,相控阵波束赋形,阵列天线设计实例

热门文章

  1. S7-200SMART_MODBUS RTU通信轮询中实现插队写入或条件写入的具体方法示例(1)
  2. 2005鸡年春联荟萃
  3. 机械师F117-F全系列安装ubuntu双系统教程
  4. Java课程设计简易绘图板_Java课程设计:高级绘画板的多功能实现(多种颜色图形)...
  5. 荣耀magic2可以更新鸿蒙吗,华为EMUI不会更新了!直接升级鸿蒙系统,荣耀手机也不会放弃...
  6. 银行的动态口令令牌是什么原理
  7. 我花10万学费买到这12张PPT
  8. 计算机美术基础学情分析,绘画教学计划(通用3篇)
  9. “双一流”大学,谁的面积更“大”?
  10. R语言图层—利用ggplot画蝙蝠侠logo及分层