类型别名(type alias)是一个名字,它是某种类型的同义词。使用类型别名有很多好处,它让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚的知道使用该类型的真实目的。
有两种方法可用于定义类型名。传统方法是使用关键字typedef:
其中关键字typedef 作为声明语句中的基本数据类型的一部分出现。含有typedef 的声明语句定义的不再是变量而是类型别名。和以前的声明语句类型一样,这里的声明符也可以包含类型修饰,从而也能由基本数据类型构造出复合类型来。
新标准规定了一种新的方法,使用别名声明来定义类型的别名:
using SI =Sales_item;//SI是Sales_item的同义词
这种方法用关键字using作为别名声明的开始,其后紧跟别名和等号,其作用是把等号左侧的名字规定成等号右侧类型的别名。
类型别名和类型的名字等价,只要是类型的名字能出现的地方,就能使用类型别名。
指针、常量和类型别名
如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句里就会产生意想不到的后果。例如下面的声明语句用到了类型pstring,它实际上是类型char*的别名:
上述两条声明语句的基本数据类型都是const pstring,和过去一样,const 是对给定类型的修饰。pstring 实际上是指向char 的指针,因此,const pstring 就是指向char 的常量指针,而非指向常量字符的指针。
遇到一条使用了类型别名的声明语句时,人们常常会错误地尝试把类型别名替换成他本来的样子,以理解该语句的含义:
这种理解是错误的,声明符中用到pstring时,其数据类型是指针,可是用char*重写了声明语句后,数据类型就变成了char ,*成为了声明符的一部分。 前者声明了一个指向char的常量指针,改写后的形式则声明了一个指向const char 的指针。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步