3.8 创建复合类型
基本的数据类型及其变体很重要,但也很简单。C和C++提供的工具允许把基本的数据类型组合成复杂的数据类型。正如我们将看到的那样,这些类型中最重要的是struct,在C++中这是类的基础。但是,创建比较复杂的类型的最简单的一种方式,只需要通过typedef来命名一个名字为另一个名字。
3.8.1 用typedef命名别名
这个关键字从字面上看的作用比它实际所起的作用更大:typedef表示“类型定义”,但用“别名”来描述可能更精确,因为这正是它真正的作用。它的语法是:
typedef原类型名别名
当数据类型稍微有点复杂时,人们经常使用typedef只是为了少敲几个键。下面是一种经常使用的typedef:
现在如果写ulong,则编译器知道意思是unsigned long。我们可能认为使用预处理程序置换就可以很容易实现,但是在一些重要的场合,编译器必须知道我们正在将名字当做类型处理,所以typedef起了关键作用。
typedef经常会派上用场的地方是指针类型。如前所述,如果写出
这实际上生成一个intx和一个inty(不是一个int)。也就是说,‘’绑定右边,而不是左边。但是,如果使用一个typedef:
则x和y都是int*类型。
有人可能争辩说避免使用typedef定义基本类型会更清楚,因此更可读,而使用大量typedef时,程序的确很快变得难以阅读。但是,在C中使用struct时,typedef是特别重要的。