【前言】
typedef 和define都是给定义别名的关键字。通过他们我们可以对一些比较长的类型或语句进行缩短。
【概念】
typedef关键字的作用范围主要限定在特定的数据类型上。通过typedef,我们可以为基本类型(如int、float)或自定义的结构体(typedef struct AA{ })、联合体等定义新的名称。这个新名称只在指定数据类型和作用域内有效,对其他类型不产生任何影响。
相比之下,define是一种预处理指令,宏定义在整个代码中都有效。可以通过define来定义常量、函数替换宏、条件编译等,它的作用范围更为广泛。所有满足条件的宏定义在预处理阶段都会被替换为指定的文本,它更像是有一个替换的作用。
【代码演示】
关于typedef的代码
他的使用方法一般都是 typedef+类型+替换名+;一般是用在对类型的转换。
我们可以看到通过typedef替换类型的变量a和b的类型依然是int和unsigned int。这说明我们使用的typedef对变量的改变时无任何影响的。至于结构体student也是如此,通过typedef的使用我们可以简化结构体变量的定义,简化代码。
关于define的代码
define的使用方法是 define+命名+要替换的部分。这也是与typedef使用上的区别。
对define的使用,我们可以是一个数字、数据类型、甚至是可以是一个表达语句。在使用define后可以加(;)也可以不加(;),个人建议不加分割号因为如果用define替换的是一个数据类型的话就没法用了。下面开始就是拓展了……
【拓展】
我们都知道知道在C语言里是没有bool数据类型的,那么我们可以通过typedef和define来自行定义一个bool类型。
准备工作:
我们需要把源文件的后缀改成c的类型,如图:
接下来就是代码部分了,我们都知道,define可以替换各种语句或类型,而typedef又可以替换各种数据类型,而bool数据类型的一般使用方法的true=1;false=0。那么我们就可以使用下面的代码来自己创造一个bool类型。
接下来写一段代码来验证这个功能。
运行过后:
可以看到,完全没有问题。那么一定有小伙伴会有疑问,如果再使用int 定义变量时,是要用int呢还是用BOOL呢?这时会不会出错啊?我们一般可以理解为这个BOOL是一个别称,他的本质还是int型,他是不会影响原本的int类型的。就像你的同学给你起了个外号,但老师叫你时候依然是你的本名。
好的,这篇文章就到这里啦,感谢各位的观看。
标签:typedef,int,数据类型,C语言,类型,替换,define From: https://blog.csdn.net/2301_80277081/article/details/139380414