typedef用于创建新的数据类型名.
typedef int Length;
会将length定义为与int具有同等意义的名字.类型length可用于类型声明,类型转换等.它和数据类型int完全相同.
类似的,声明
typedef char *String;
将string声明为与char*或字符指针相同的含义
typedef中声明的类型在变量名的位置出现,而不是紧接在关键字typedef之后.以大写字母作为typedef定义的类型名的首字母以做区分.
从任何意义上讲,typedef声明并没有创建一个新类型,它只是为某个已存在的类型增加了一个新的名称而已.typedef声明也没有增加任何新的语义:通过这种方式声明的变量与通过普通声明方式声明的变量具有完全相同的属性.type类似于#define语句,但typedef是由编译器解释的,因此它的文本替换功能要超过预处理器能力.
除了使表达式更简洁之外,使用typedef还有两个重要原因,首先,它可以使程序参数化,以提高程序的可移植性,如果typedef声明的数据类型同机器相关,那么当程序移植到其他机器上时,只需改变typedef类型的定义就可以了.
一个经常用到的情况是,对于各种不同大小的类型值来说,都使用通过typedef定义的类型名,然后分别为各个不同的宿主机选择一组合适的short,int和long类型大小即可.
这个原因我想应该是,可以直接修改定义的那个名字的数据类型,就可以将所有使用此名字的数据类型改变,而不用去源代码中一个一个修改.
第二个是为程序提供更好的说明性,但是这个我感觉没那么大的重要性.