嵌入式linux3--define和typedef

define和typedef都可以提一个对象取别名,目的是提升程序的可读性。

#define宏处理是预处理指令,在预处理阶段就把字符串替换过来,可以为类型取别名,但更多的是用来定义常量、编译开关、甚至成段语句;

typedef是关键字,常用来定义一个已经存在的类型的新别名。

在面试中常遇到的以下两种对指针的操作问题:

针对INT_P pi, pj;

#define INT_P int*;        //展开是int *pi, pj;   pj只是一个整型变量,不是指针变量。

typedef int* INT_P;        //展开是 int *pi, *pj;

typedef int* INT_P; 

const INT_P p=x; // 此时p是指针常量,指针p不能变,但指针指向的内容可以变。注意定义时要赋初值,不然无法再赋值了。

如果用define会直接展开成const int * p;也就是常量指针,p可以更改,但不能修改指针指向的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值