欢迎来到天天文库
浏览记录
ID:48050933
大小:1.01 MB
页数:14页
时间:2020-01-12
《C语言typedef用法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2012年3月(王艳春-阅)科学和谐创新自主Typedef用法typedef声明,简称typedef,为现有类型创建一个新的名字,通常是易于记忆的名字。使用typedef可增加编写代码的美观性和可读性。所谓美观,意指typedef能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。typedef促进跨平台开发定义一种类型的别名,而不只是简单的宏替换为复杂的声明定义一个新的简单的别名Typedef与#define两个陷阱1.促进跨平台开发用typedef来定义与平台无关的类型比如定义一个叫REAL的浮点类型,在目标平台一上,让它表示最高精
2、度的类型为:typedeflongdoubleREAL;在不支持longdouble的平台二上,改为:typedefdoubleREAL;在连double都不支持的平台三上,改为:typedeffloatREAL;也就是说,当跨平台时,只要改下typedef本身就行,不用对其他源码做任何修改。2.定义一种类型的别名,而不只是简单的宏替换typedef使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。但是typedef并不创建新的类型,它仅仅为现有类型添加一个同义字。a.基本数据类型基本类型出现在所声明的变量名字中,位于‘’typedef‘’关键字右边。例
3、如:typedefintsize;此声明定义了一个int的同义字,名字为size。可以在任何需要int的上下文中使用size:voidmeasure(size*psz);sizearray[4];sizelen=file.getlength();b.typedef还可以掩饰复合类型,如指针和数组typedefcharLine[81];Linetext,secondline;Typedef与函数指针形式:typedef返回类型(*新类型)(参数表)例:typedefchar(*PTRFUN)(int);PTRFUNpFun;charglFun(inta){Return
4、4;}voidmain(){pFun=glFun;(*pFun)(2);}定义了一种PTRFUN的类型,具体类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型,同时使用这个新类型定义了变量pFun。c.Typedef与结构体在C中定义一个结构体类型要用typedef:typedefstructStudent{inta;}Stu;于是在声明变量的时候就可以直接这样定义:Stustu1;如果没有typedef就必须用structStudentstu1;来声明变量stu1。这里的Stu实际上就是structStudent的别名,在大量使用的时候比较方便
5、。d.Typedef与enumtypedefenum表示定义了一个枚举型的数据结构例:typedefenum{DWI_Nothing,DWI_2x2Icon,…..DWI_None}DrawMenuItemType;可以用上边的DrawMenuItemType去定义变量例如:DrawMenuItemTypeData1Data1这个变量的取值就是DWI_Nothing,DWI_2x2Icon,….DWI_None中的一个。3.为复杂的声明定义一个新的简单的别名方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的
6、最简化版。举例:1.原声明:int*(*a[5])(int,char*);变量名为a,直接用一个新别名pFun替换a就可以了:typedefint*(*pFun)(int,char*);原声明的最简化版:pFuna[5];2.原声明:void(*b[10])(void(*)());变量名为b,先替换右边部分括号里的,pFunParam为别名一:typedefvoid(*pFunParam)();再替换左边的变量b,pFunx为别名二:typedefvoid(*pFunx)(pFunParam);原声明的最简化版:pFunxb[10];3.原声明:doube(*)()
7、(*e)[9];变量名为e,先替换左边部分,pFuny为别名一:typedefdouble(*pFuny)();再替换右边的变量e,pFunParamy为别名二typedefpFuny(*pFunParamy)[9];原声明的最简化版:pFunParamye;理解复杂声明可用的“右左法则”:从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。举例:int(*func)(int*p);首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;然后跳出
此文档下载收益归作者所有