专栏中心

EEPW首页 > 专栏 > 理解typedef

理解typedef

发布人:0750long 时间:2009-06-17 来源:工程师 发布文章
理解typedef

 

    首先请看看下面这两句: typedef int a[10]; typedef void (*p)(void); 如果你能一眼就看出它们的意思,那请不要再往下看了。如果你不太理解,或概念还有些模糊,请继续往下看吧。

    下面的东西我就直接把人家的东西粘上去吧。自己敲太慢了。呵呵。原文(摘录): typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,这种形式在所有形式中是最简单的,但却没有对 typedef进一步解释,使得不少人用#define的思维来看待typedef,把int与PARA分开来看,int是一部分,PARA是另一部分,但实际上根本就不是这么一回事。int与PARA是一个整体!就象int i:声明一样是一个整体声明,只不过int i定义了一个变量,而typedef定义了一个别名。这些人由于持有这种错误的观念,就会无法理解如下一些声明: typedef int a[10]; typedef void (*p)(void); 他们会以为a[10]是int的别名,(*p)(void)是void的别名,但这样的别名看起来又似乎不是合法的名字,于是陷入困惑之中。实际上,上面的语句把a声明为具有10个int元素的数组的类型别名,p是一种函数指针的类型别名。 虽然在功能上,typedef可以看作一个跟int PARA分离的动作,但语法上typedef属于存储类声明说明符,因此严格来说,typedef int PARA整个是一个完整的声明。定义一个函数指针类型。比如原函数是 void func(void); 那么定义的函数指针类型就是typedef void (*Fun)(void); 然后用此类型生成一个指向函数的指针: Fun func1; 当func1获取函数地址之后,那么你就可以向调用原函数那样来使用这个函数指针: func1(void);

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

联发科技校园软件大赛——不知营养差不多

视频 2011-01-04

AI转型带来哪些市场机遇?IDC分析师把脉2025走势

智能计算 2025-04-09

中国将对汽车央企进行重组以改善企业发展前景并提升利润

国际视野 2025-04-09

爱簿智能推出首款算力本AIBOOK,重新定义个人AI生产力工具

联发科技校园软件大赛——低调XD

视频 2011-01-04

联发科技校园软件大赛——千机变

视频 2011-01-04

意法半导体智能功率开关:紧凑、高效、稳健

数据中心管理平台助力英特尔能耗降低

AI强势引领,中国网络市场进入“当打之年”

IDC年度重磅活动北美启幕:三项全新AI研究成果首发 中国站即将来袭

智能计算 2025-04-09

罗德与施瓦茨携手Ceva,推出针对蓝牙OTA UTP测试模式的方案

联发科技校园软件大赛——mabill

视频 2011-01-04

联发科技校园软件大赛——无名

视频 2011-01-04

如何使用LLM建立行业KG(知识图)

雷诺集团与日产更新战略联盟协议并调整在印度的合作模式

更多 培训课堂
更多 焦点
更多 视频

技术专区