C语言 typedef

用 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 灵活。

猜你喜欢

转载自blog.csdn.net/yanxu_165319/article/details/81163017