typedef关键字用法

发布时间:2023-03-07 16:55:15   来源:文档文库   
字号:
typedef用法
1为现有数据类型定义同义词
typedef使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。例如:
typedefintsize;此声明定义了一个int的同义字,名字为size注意typedef并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要int的上下文中使用sizevoidmeasure(size*psz;
sizearray[4];2typedef还可以掩饰复合类型,如指针和数组
数组
例如:typedefcharLine[81];表示使用Line代表具有81个元素的char类型数组。如果要生成类似的数据可以使用如下形式:Linetext,secondline;相当于chartest[81];charsecondline[81];隐藏指针语法


例如:
typedefchar*pstr;

intmystrcmp(pstr,pstr;相当于
intmystrcmp(char*,char*;注意:标准函数strcmp(有两个‘constchar*'类型的参数。因此,它可能会误导人们象下面这样声明mystrcmp(
intmystrcmp(constpstr,constpstr;这是错误的,‘constpstr'被解释为‘constchar*‘(一个指向char的常量指针),而不是‘char*'(指向char的指针)。
修改:添加,typedefconstc
pstr;记住:不管什么时候,只要为指针声明typedef,那么都要在最终的typedef名称中加一个const,以使得该指针本身是常量,而不是对象
链表中应用
例如:
typedefstructnode{
charname[20];

structnode*link;
}stu;3代码简化
例如:typedefint(*PF(constchar*,constchar*;使用PF类型作为函数指针的同义字,该函数有两个constchar*类型的参数以及一个int类型的返回值。
4促进扩平台开发
typedef有另外一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫REAL的浮点类型,在目标机器上它可以i获得最高的精度:

typedeflongdoubleREAL;
在不支持longdouble的机器上,该typedef看起来会是下面这样:typedefdoubleREAL;
并且,在连double都不支持的机器上,typedef看起来会是这样:typedeffloatREAL;
你不用对源代码做任何修改,便可以在每一种平台上编译这个使用REAL型的应用程序。唯一要改的是typedef本身。在大多数情况下,甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗?标准库广泛地使用typedef来创建这样的平台无关类型:size_tptrdifffpos_t就是其中的例子。此外,象std::stringstd::ofstream这样的typedef还隐藏了长长的,难以理解的模板特化语法5C语言实例
1typedeflongbyte_4;给已知数据类型long起个新名字,叫byte_42typedefstructtagMyStruct
{
intiNum;longlLength;
}MyStruct;完成两个工作,一是定义了structtagMyStruct结构,可以用structtagMyStructvarName来定义变量,但要注意,使用tagMyStructvarName来定义变量是不对的

本文来源:https://www.2haoxitong.net/k/doc/d00892d9a58da0116c17492f.html

《typedef关键字用法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式