C语言之#define,typedef区别对比
1.#define
语法
#define 宏名 值
定义
#define是一个预处理指令,用于定义宏常量和宏函数。
它不是一个普通的语句,而是在编译之前由预处理器进行处理。
注:#define定义的宏没有类型检查,只进行简单的文本替换!!!
2.typedef
语法
typedef 数据类型 别名
定义
typedef是一个关键字,用于创建类型别名,可以为现有类型赋予一个新的名称。
注:我们可以直接使用这些别名作为类型来声明新变量,就像使用原始类型一样。
3.例子
#define dPS int *
typedef int * tPS;
//定义如下变量
dPS p1,p2;
tps p3,p4;
分析
乍一看p1,p2,p3,p4应该都为int *类型
其实不然!
我们代入看看!
int * p1,p2;//使用#define
int * p3,*p4;//使用typedef
一目了然!
容易得到:
p1,p3,p4都为 int * 类型
而p2为 int 类型
由此,我们可以很好的理解两句话!(也就是区别所在)
#define定义的宏没有类型检查,只进行简单的文本替换!
本人理解:剪贴板,纯纯复制粘贴!!!
typedef使用这些别名作为类型来声明新变量,就像使用原始类型一样
本人理解:这他娘的就是一种类型啊!!!
总之,这里#define和typedef给我的感觉是一个治标一个治本。
如有理解不当,文章存在错误,请各位大佬指出,谢谢!!!