用 typedef 为数组去别名:
typedef int A[6];
表示用 A 代替 int [6]。
即:A a; 等于 int a[6];
typedef 与 #define 比较
typdef 的一些特性与 define 的功能重合。例如:
#define BYTE unsigned char
这是预处理器用 BYTE 替换 unsigned char。
但也有 #define 没有的功能,例如:
typedef char * STRING;
编译器把 STRING 解释为一个类型的表示符,该类型指向 char。因此:
STRING name, sign;
相当于:
char * name , * sign;
但是,如果这样假设:
#define STRING char *
然后,下面的声明:
STRING name, sign;
将被翻译成:
char * name, sign;
这导致 name 才是指针。
简而言之,#define 只是字面上的替换,由预处理器执行,#define A B 相当于打开编辑器的替换功能,把所有的 B 替换成 A。
与 #define 不同,typedef 具有以下三个特点:
- 1.typedef 给出的符号名称仅限于对类型,而不是对值。
- 2.typedef 的解释由编译器,而不是预处理器执行。并不是简单的文本替换。
- 3.虽然范围有限,但是在其受限范围内 typedef 比 #define 灵活。