求助指针操作的问题 如下文所示

2019-07-20 12:42发布

typedef struct
{
int cmd_head;//帧头
int msg_type;//消息类型
int param[10];//数据存储区
void(*cbActionListener)(int*);
int cmd_tail[4];//帧尾
}CmdObject,*PCmdObject;
这个结构体中void(*cbActionListener)(int*);这句话是什么意思?是怎么分解理解的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
罗马的猫
2019-07-20 18:28
本帖最后由 罗马的猫 于 2017-8-10 18:33 编辑

这是一个函数指针

函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。
C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = &func;
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

来自百度,自己搜



一周热门 更多>