"); //-->
首先请看看下面这两句: 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);
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
隔离放大器及其应用
联发科技校园软件大赛——不知营养差不多
单片开关电源瞬态干扰及音频噪声抑制技术
AI转型带来哪些市场机遇?IDC分析师把脉2025走势
5.7inch 320x240(320240) stn lcm 蓝膜负显液晶显示模块
寻求高水准助听器开发工程师的合作或加盟
5.7inch 320x240(320240) stn lcm 蓝膜负显液晶显示模块
Rhapsody 6.0 released
多功能三相低压断路控制技术研究
电站直流电源后备系统及智能充电机的设计
中国将对汽车央企进行重组以改善企业发展前景并提升利润
脉冲频率检测电路
爱簿智能推出首款算力本AIBOOK,重新定义个人AI生产力工具
联发科技校园软件大赛——低调XD
联发科技校园软件大赛——千机变
意法半导体智能功率开关:紧凑、高效、稳健
磁带首尾探测器电路
可听式光探测器电路
数据中心管理平台助力英特尔能耗降低
AI强势引领,中国网络市场进入“当打之年”
电流传感放大器MAX471 MAX472的原理及应用
红外探测器电路
IDC年度重磅活动北美启幕:三项全新AI研究成果首发 中国站即将来袭
罗德与施瓦茨携手Ceva,推出针对蓝牙OTA UTP测试模式的方案
联发科技校园软件大赛——mabill
联发科技校园软件大赛——无名
如何使用LLM建立行业KG(知识图)
光线变化检测电路
雷诺集团与日产更新战略联盟协议并调整在印度的合作模式
问一下关于Inter C3系列FLASH的问题