数组函数指针

时光总嘲笑我的痴心妄想 提交于 2020-02-06 01:11:40

指针函数:int *p();
指针函数注意不能返回局部变量,只能返回全局变量。
函数指针:int (*p)();

函数指针的用法如下:
在这里插入图片描述

输出结果:
在这里插入图片描述

下面是函数指针作为参数:
在这里插入图片描述
int (*fp)(int,int)它代表的是递两个int类型参数的函数。你看下面calc(add,3,5)就是这么用的

在这里插入图片描述
上面这副图里面的 int(select(char op))(int, int)
这个简化简化之后是 int(
)(int, int) ,代表一个是函数指针。
select是函数名,该函数有一个char类型的参数,根据上图,这个参数用来进行选择。他有一个返回值,返回值是指针,这个指针就是函数指针,返回整型并且带有两个整型参数的函数指针,函数指针的两个int就是上图中的add和sub函数。

在这里插入图片描述
typedef irq_func void(*irq_func)(int irq);
irq_func irq_array[332]; //这个代表

C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,eg:
typedef int BOOL;
BOOL bflag=TRUE;

(*irq_func)(int irq) arra[32];
这就是定义了一个函数指针数组,要把函数的地址存放到一个数组。

在这里插入图片描述

上面函数指针定义指针fp作为传递参数传给数组,注意这个数组里面存储的内容也是指针类型。
上面的irq_arraybit,它就是调用上面那个函数,(函数指针调用函数需要加*号,但是也可以省略 — c陷阱与缺陷)bit作为一个中断号传递过来。

其实这里还是有点含糊。

总体来说,上面是定义函数指针和存放指针类型的数组,下面的登记函数是利用定义把对应函数存入数组中,中间部分是调用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!