函数指针
- 一个函数在编译时被分配一个入口地址,这个地址称为函数指针,函数名就代表函数的入口地址(类似数组名,不用&,函数名本身就代表函数的入口地址)。
- 函数指针定义需要包含两个要素,一个是函数的返回值,一个是函数参数。因此定义执行函数的指针时应该包含这两个要素。
- 定义函数指针一般通过两个步骤:
** 步骤一,定义函数类型,比如 typedef int(fun_type)(int, char),这样就定义了一个返回值为int,参数为int,char的函数类型。
** 步骤二,根据定义的函数类型来定义函数指针,即 fun_type *pFunc = myfunc。这里不需要取地址,因为函数名本身就是函数的入口地址。
- 当然也可以直接定义函数指针类型,typedef int(*func_p)(int, char)
- 利用函数指针调用函数也有两种方式:
** 方式一,直接把函数指针当成函数名来用,即 pFunc(10, 'a')
** 方式二,先解引用得到函数类型再调用,即(*pFunc)(20, 'b')
一个函数作为另一个函数的参数
- 只需要用函数指针类型来作为形参即可
![]()
![]()
函数指针数组
- 比如,int(*func_parr[3])(int, int),就是一个包含三个元素的函数指针数组
- 有点中断向量表的感觉了哈哈
posted @
2022-06-16 15:30
肖肖凯
阅读(
89)
评论()
收藏
举报