define和typedef的区别

define和typedef的区别

#define 是宏命令,在编译前,由预处理器做替代,把程序中的所有遇到的词,全部替代。

简单理解为就是进行了简单字面上的替换。。
例如:
#define PINT int* 就是把所有的词 PINT 替换成 int * ,替换完毕再编译。

typedef int* pint; 是语句,由编译器在编译过程中编译处理。

int* x;
pint x;
两个声明是等价的。
区别1:
#define是宏命令,末尾不要加“;”号,不是语句,如果加了“;”号也会在预处理的时候进行替换。
typedef是一句完整的语句,末尾要加“;”号。
区别2:
typedef int* pint;
long int* x; 声明允许
long pint x; 声明不允许 (pint就是一个int型的指针)在自己的作用域内给一个已经存在的类型一个别名,不是简单的替换

#define PINT int*
long int* x; 声明允许
long PINT x; 声明允许 在这里只是进行字面上的简单的替换,不考虑实际的意义
区别3:
const pint p; 锁定 pint 类型,锁定初始化后的指针地址。
const PINT p; 预处理为const int * p; 锁定初始化后的指针指向的值。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值