C++不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取"别名",该功能是通过关键字typedef来完成的。例如,有整型量a、b:
int a,b;
int是整型变量的类型说明符,int实际上是integer的简写。为了增加程序的可读性,可把整型说明符用typedef定义为:
typedef int INTEGER
以后就可用INTEGER来代替int作整型变量的类型说明了,例如:
INTEGER a,b;
它等效于:
int a,b;
用typedef定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。 C++中是用关键字 typedef定义一个标识符来代表一种数据类型,该标识符可以象其它基本类型的标识符一样使用。在用typedef进行类型定义时,其语法和变量定义很 相似。typedef定义的一般形式为:
typedef 原类型名 新类型名
例如:
typedef int * intptr;
定义intptr为一个指向整型的指针类型。变量定义语句:
intptr p;
等价于:
int * p;
需要 注意 的是:typedef定义的类型只是C++已有类型的别名,而不是新类型。有时也可用宏定义来代替typedef的功能,但是宏定义是由预处理完成的,而typedef则是在编译时完成的,后者更为灵活方便。
![]() | typedef可以为数据类型定义一个符号名,就象引用是一个变量的别名一样。它的主要用途是简化复杂的类型说明,改进程序的可读性。下面是几个例子: typedef char *String; Typedef char Name[12]; typedef unsigned int uint; 这些定义的效果是String变成char*的别名,Name变成有12个元素的字符数组的别名,uint变成unsigned int的别名。 String str; // 等价于char *str; Name name; // 等价于 char name[12]; uint n; // 等价于unsigned int n; 前面复杂的的Compare说明,用typedef简化后,可读性就好多了: typedef int (*Compare)(const char*, const char*); int BinSearch (char *item, char *table[], int n, Compare comp) { //... if ((cmp = comp(item, table[mid])) == 0) return mid; //... } typedef使得Compare作为一个新的类型名,它表示一个有给定原型(有两个常量字符指针参数,返回值为int型)的函数指针类型。 |