打印
[开发资料]

函数指针

[复制链接]
247|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cemaj|  楼主 | 2022-12-22 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int fun(int x,int y);
这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值
int *fun(int x,int y);
这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。
指针函数也没什么特别的,和普通函数对比不过就是其返回了一个指针(即地址值)而已。
指针函数的写法int *fun(int x,int y);int * fun(int x,int y);int* fun(int x,int y);
函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
声明格式:类型说明符 (*函数名) (参数)
int (*fun)(int x,int y);
函数指针是需要把一个函数的地址赋值给它,有两种写法:
fun = &Function;fun = Function;
取地址运算符&不是必需的,因为一个函数标识符就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。
调用函数指针的方式也有两种:
x = (*fun)();x = fun();
两种方式均可,其中第二种看上去和普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数。

指针函数本质是一个函数,其返回值为指针。
函数指针本质是一个指针,其指向一个函数。

定义函数指针变量
① int (*pFunc)(char *frame, int len);
定义了一个函数指针变量pFunc,它可以指向这样的函数:返回值为int,形参为char*、int
② int *(*pFunc[5])(int len);
定义了5个函数指针变量:pFunc[0]、pFunc[1]···,它们都可以指向这样的函数:返回值为int*,形参为int
2、定义函数指针类型
定义函数指针类型,必须使用typedef,方法就是,在“定义函数指针变量”加上typedef。
typedef int (*pFunc_t)(char *frame, int len);//定义了一个类型pFunc_t
举例:
typedef  int (*pFunc_t)(char *frame, int len);//定义了一个类型pFunc_tint read_voltage(char *data, int len){    int voltage = 0;    ···//其他功能代码    return voltage;}int main(void){    pFunc_t   pHandler = read_voltage;//使用类型pFunc_t来定义函数指针变量    ···//其他功能代码}

使用特权

评论回复
沙发
Undshing| | 2022-12-26 11:56 | 只看该作者
函数指针就是函数的地址

使用特权

评论回复
板凳
alxd| | 2022-12-28 12:51 | 只看该作者
指针还是很好用的,C语言之中的神

使用特权

评论回复
地板
Carmen7| | 2022-12-28 14:02 | 只看该作者
要是将指针用好了,真的还不错呢

使用特权

评论回复
5
Allison8859| | 2022-12-28 15:12 | 只看该作者
感觉指针还是比较难,抽象

使用特权

评论回复
6
Emily999| | 2022-12-28 16:18 | 只看该作者
讲的挺好的。指针真的需要好好学习一下才行

使用特权

评论回复
7
Betty996| | 2022-12-28 18:20 | 只看该作者
一般情况还是少用指针,尤其是简单的程序

使用特权

评论回复
8
Betty1299| | 2022-12-29 06:57 | 只看该作者
指针用多了,是不是会溢出啊?

使用特权

评论回复
9
Belle1257| | 2022-12-29 07:50 | 只看该作者
指针比较重要的是设置好地址吧

使用特权

评论回复
10
Candic12e| | 2022-12-29 09:05 | 只看该作者
这个之前听说堆栈,是不是也与指针有关系啊

使用特权

评论回复
11
Charlene沙| | 2022-12-29 10:22 | 只看该作者
指针赋值是比较重要的

使用特权

评论回复
12
Annie556| | 2022-12-29 12:04 | 只看该作者
话说什么时候用指针函数,什么时候用函数指针啊?

使用特权

评论回复
13
MessageRing| | 2023-1-3 14:16 | 只看该作者
函数指针就是函数的地址嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

3599

帖子

2

粉丝