随着程序越来越复杂,程序中用到的类型也越来越复杂,这种复杂性体现在两个方面:
第一, 一些类型难于“拼写”,有时其名字难于体现其构造目的和含义;
第二, 有时候根本搞不清所需的是哪种类型。
2.5.1 类型别名(新标准)
【类型别名是一个名字,它是某种类型的同义词,有两种方法可以定义类型别名。】
【传统的方法是使用关键字typedef,关键字typedef 作为声明语句中的基本数据类型的一部分出现,该声明语句定义的不再是变量而是类型别名。
该声明语句中的声明符也可包含类型修饰,从而也能由基本数据类型构造出复合类型来(可以不通过基本类型而直接定义指向该类型的指针)。
大部分情况下类型别名和类型的名字等价,但当如果类型别名指代的是复合类型或常量时,再把两者视为等价进行理解就是错误的。
typedef char *pstring;
const pstring cstr = 0;//cstr 是指向char 的常量指针
const char *cstr = 0;//单纯的把类型别名对应的原名替换,是对类型别名的一种错误理解