一、typedef的用法
在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间。实例:
![](https://img-blog.csdnimg.cn/img_convert/4750efb7e3ffa495f40380fdb4e4ffb9.png)
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/7145501b4939b5ef96e7677c10574100.png)
typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。
二、#define的用法
#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题。实例:
![](https://img-blog.csdnimg.cn/img_convert/7e64fa4851929d951eb212d0806c18ac.png)
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/a5a0eca18b7a7697a4f0823447c6b36e.png)
三、typedef与define的区别
用法不同:typedef用来定义一种数据类型的别名,增强程序的可读性。define主要用来定义常量,以及书写复杂使用频繁的宏;
执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预处理阶段的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查;
作用域不同:typedef有作用域限定,define不受作用域约束,只要是在define声明后的引用都是正确的;
对指针的操作不同:typedef和define定义指针时有很大区别;
![](https://img-blog.csdnimg.cn/img_convert/c83b0fba58d46b28faf8a6da32eedfc6.png)
[注意]:typedef定义是语句,因此句尾要加上分号;而define不是语句,不能在句尾加分号;