在线等,一直对typedef 不太理解,看看这个是什么意思

wanglovec 2014-05-29 10:54:57
typedef bool (*test)(void);

这句话表示什么意思呢? 求解释
...全文
487 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglovec 2014-07-01
  • 打赏
  • 举报
回复
引用 13 楼 Saleayas 的回复:
int a; // 定义一个变量 a, 类型为 int; typedef int a; // 定义一个类型 a, 类型为 int; bool (*test)(void); // 定义一个函数指针 test. 类型为 bool (*)(void); typedef bool (*test)(void); // 明白了??
嗯 这个懂了 3Q
Saleayas 2014-06-30
  • 打赏
  • 举报
回复
int a; // 定义一个变量 a, 类型为 int; typedef int a; // 定义一个类型 a, 类型为 int; bool (*test)(void); // 定义一个函数指针 test. 类型为 bool (*)(void); typedef bool (*test)(void); // 明白了??
风划雪月 2014-06-30
  • 打赏
  • 举报
回复
typedef有窍门的,去掉typedef,剩下的与语句在定义某个类型的name,那么加上typedef,则定义对应的类型,也就是这个类型的别名,屡试不爽。 授人以鱼不如授人以渔
penghuahuijuan 2014-06-30
  • 打赏
  • 举报
回复
bool (*test)(void); // 定义一个函数指针 test. 类型为 bool (*)(void); 我也懂了,谢谢
xiao0915 2014-06-30
  • 打赏
  • 举报
回复
函数指针类型
勤奋的小游侠 2014-06-28
  • 打赏
  • 举报
回复
引用 7 楼 victor1960 的回复:
楼主需要补一下 c/c++ 的 记号表示,看一下这些的 结合顺序,看下最基本的C语言的书就会彻底明白了,如: K&R的 c程序设计语言
K&R的 c程序设计语言 这本书有说明 5.1节,6.7节,附录8.5。 虽然我也没有仔细看过里面的原理,大概是和词法解析器的taken之类有关的吧,ak嘿嘿。
wangen12345 2014-06-28
  • 打赏
  • 举报
回复
定义一个函数指针的类型
我看你有戏 2014-06-28
  • 打赏
  • 举报
回复
函数指针类型 这个一开始还是比较难理解的
xiaohuh421 2014-06-27
  • 打赏
  • 举报
回复
typedef bool (*test)(void); 就是定义一个函数指针类型. 这时你就可以使用这个类型来定义变量: bool MyFun(void) { .... return true; } test pFun = MyFun; pFun(); //等价于调用 MyFun()
wanglovec 2014-06-27
  • 打赏
  • 举报
回复
typedef int INT 我知道这是把int 类型 定义为 INT 以后 int 的场合都可以用 INT 代替 typedef bool (*test)(void); 》》这个 如果 写成 typedef bool (*test)(void ) Test; 我就理解了, 我困惑的是 为什么 它后面 不需要写上 Test 好像少点什么样 、、 呵呵 有点弱智 ,见笑!
赵4老师 2014-06-27
  • 打赏
  • 举报
回复
//char (*(*x[3])())[5];//x是什么类型的变量?
//
//分析C语言声明,关键是搞清楚这个变量是个什么东西(函数、指针、数组),
//是函数那么剩下的就是他的参数和返回值,
//是指针那剩下部分是说明他指向什么,
//是数组剩下的部分就是说明数组的成员是什么类型。
//解析C语言声明规则:
//从左侧第一个标识符开始,按照优先级进行结合。*表示是..的指针,const表示只读的,volatile表示可变的,[]表示是数组,()表示是函数。
//
//x和[3]结合说明是一个大小为3的数组,该数组的每个元素为一类指针,该类指针指向一类函数,该类函数无参数,返回一类指针,该类指针指向一个大小为5的char型数组
#include <stdio.h>
#include <typeinfo.h>
char num[5];
char (*x00())[5] {
    return #
}
int main() {
    char (*x000)[5];//返回值
    char (*(x00)())[5];//函数原型,参数为空,返回值为指针
    char (*(*x0)())[5];//数组的元素,是个函数指针
    char (*(*x[3])())[5];//是个数组,大小为3

    x0 = x00;
    x[0] = x0;
    x[1] = x0;
    x[2] = x0;
    printf("typeid(x).name() is %s\n",typeid(x).name());
    return 0;
}
//typeid(x).name() is char (* (__cdecl**)(void))[5]
难题 2014-06-27
  • 打赏
  • 举报
回复
函数指针类型
victor1960 2014-06-27
  • 打赏
  • 举报
回复
楼主需要补一下 c/c++ 的 记号表示,看一下这些的 结合顺序,看下最基本的C语言的书就会彻底明白了,如: K&R的 c程序设计语言
lanlvy 2014-05-29
  • 打赏
  • 举报
回复
shlvshe00 2014-05-29
  • 打赏
  • 举报
回复
定义typedef name 如果定义test a; 则a 是一个函数指针,函数的返回值是bool,参数是void类型
wen_eric 2014-05-29
  • 打赏
  • 举报
回复
函数指针,返回值为bool,没有参数
cao_julians 2014-05-29
  • 打赏
  • 举报
回复
typedef bool (*test)(void); 分成两步理解 1.先去掉typedef bool (*test)(void); 能否理解? test是指针变量,指向函数--无参数;由(void)表示;函数的返回值是bool 2.再恢复typedef 则表示将test指针从变量“提升”为类型 综合上述 声明(命名)一个类型:指向 bool ---(void)形式的函数指针类型

64,382

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧