指针函数: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作为一个中断号传递过来。
其实这里还是有点含糊。
总体来说,上面是定义函数指针和存放指针类型的数组,下面的登记函数是利用定义把对应函数存入数组中,中间部分是调用。
来源:CSDN
作者:yoka_milk
链接:https://blog.csdn.net/weixin_45479946/article/details/104184690