C语言的问题,网上代码,不知道这个回调函数中的 CallBackFun属于什么类型,貌似木有定义这个啊
答案:1 悬赏:50
解决时间 2021-01-09 01:10
- 提问者网友:孤山下
- 2021-01-08 15:31
C语言的问题,网上代码,不知道这个回调函数中的 CallBackFun属于什么类型,貌似木有定义这个啊
最佳答案
- 二级知识专家网友:梦中风几里
- 2021-01-08 16:38
typedef int (*CallBackFun)(char *p);
是定义一个函数指针类型,其中p可以有、可以没有
这个类型的名字是 CallBackFun,原型是int (*)(char *)
如果觉得难以理解,可以简单用宏模拟如下
#define CallBackFun (int (*)(char *))追问您好,CallBackFun是不是倍定义成了一个指针变量?就是用CallbackFun 变量,就成了指针变量,但不知道他是int*变量还是longint*追答CallBackFun是类型。
说一下如何理解typedef语句
typedef语句从左向右看,第一个“新”名字就是定义的新类型名
其原型就是:整个typedef语句删除typedef关键字和新类型名之后剩下的部分;
比如 typedef unsigned int uint_t;
从左向右看,第一个新名字是uint_t,所以uint_t就是类型
剔除typedef和unit_t,其原型就是 unsigned int
那么 typedef int (*CallBackFun)(char *p);
从左向右看,第一个新名字是CallBackFun,所以CallBackFun就是新定义的类型
剔除typedef和CallBackFun,其原型就是 int (*)(char *)
再回到本问题来,理解了函数指针类型定义,下面的就很容易理解了:CallBackFun 是类型,pCallBack是变量
int call(CallBackFun pCallBack, char *p) {
printf("call 直接打印出字符%s!\n", p);
pCallBack(p);
return 0;
}
是定义一个函数指针类型,其中p可以有、可以没有
这个类型的名字是 CallBackFun,原型是int (*)(char *)
如果觉得难以理解,可以简单用宏模拟如下
#define CallBackFun (int (*)(char *))追问您好,CallBackFun是不是倍定义成了一个指针变量?就是用CallbackFun 变量,就成了指针变量,但不知道他是int*变量还是longint*追答CallBackFun是类型。
说一下如何理解typedef语句
typedef语句从左向右看,第一个“新”名字就是定义的新类型名
其原型就是:整个typedef语句删除typedef关键字和新类型名之后剩下的部分;
比如 typedef unsigned int uint_t;
从左向右看,第一个新名字是uint_t,所以uint_t就是类型
剔除typedef和unit_t,其原型就是 unsigned int
那么 typedef int (*CallBackFun)(char *p);
从左向右看,第一个新名字是CallBackFun,所以CallBackFun就是新定义的类型
剔除typedef和CallBackFun,其原型就是 int (*)(char *)
再回到本问题来,理解了函数指针类型定义,下面的就很容易理解了:CallBackFun 是类型,pCallBack是变量
int call(CallBackFun pCallBack, char *p) {
printf("call 直接打印出字符%s!\n", p);
pCallBack(p);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯