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 灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值