一、两者区别
关键字 | typedef | define(宏) |
作用不同 | 定义(标识符或关键字)别名 | 简单字符串替换 |
执行时间不同 | 编译过程一部分 | 预处理过程完成 |
作用域不同 | 从定义到花括号“}”截至 | 从定义到文件结尾截止 |
对指针操作不同 | typedef int* INTPTR1; INTPTR1 p1,p1; 相当于 int *p1和int p2 | #define INTPTR2 int* INTPTR1 p3,p4; 相当于 int *p3和int *p4 |
示例 | typedef int INT; | #define INT int |
示例含义 | int别名为INT | 单纯替换 |
示例注意 | 分号结尾 | 无分号 |
个人理解:*p中p为地址,*为取p地址所在的变量值,int *p理解为声明一个int类型的变量*p,但是并没有为变量分配空间,仅分配了p地址空间。
二、参考内容
1.面试题:typedef与#define的区别_博阿卿的博客-CSDN博客
2.typedef和#define的用法与区别 - - 博客园
3.typedef和define的作用域_testman00的博客-CSDN博客
4.int* p;和int *p;应怎样理解(c++语言中星号的位置)?_秋叶依剑的博客-CSDN博客_int *p