数据结构学习笔记:typedef存在的意义和用法
意义:
我们先看百度百科说的:typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。
这是不是对于新学数据结构的小伙伴很难理解。那么不妨用另一个解释,以结构体为例:
当我们定义了一串很长的结构体名称时,为方便使用这个结构体,可以对这个结构体进行二次命名,简单点说,王二狗的外号叫做狗哥,那么,这个王二狗和狗哥都是指的同一个人。而在c/c++中我们如何实现这个对结构体的别名呢?这时候就用到了typedef,接下来,我们再用一个简单的代码例子说明:
#include <stdio.h> //定义一个结构体 typedef struct Student { int age; }STU;//别名是STU,即struct Student =STU int main() { //当我们想要声明这个结构体的时候,就可以通过STU来声明 STU stu1; stu1.age = 100; printf("%d",stu1.age); return 0; }
在定义一个结构体时,我们在struct前面加一个typedef,再在这个结构体后大括号和分号之间写上你自定义的名称,在上面的例子中,这个STU=struct Student。
这样,当我们要声明这个结构体的时候,就可以使用他的别称了。
接下来,我们在进行一点点的加强理解,先上代码。
#include <stdio.h> //定义一个结构体 typedef struct Student { int age; }*PSTU,STU;//别名是STU,即struct Student =STU * PSTU=* struct Student int main() { //当我们想要声明这个结构体的时候,就可以通过STU来声明 STU stu1; //定义一个PSTU类型的指针,而这个PSTU即是struct Student类型 PSTU pstu = &stu1; pstu->age = 99; printf("%d",stu1.age); return 0; }
相比上面的代码,我们在结构体别名上另加了一个*PSTU,它等价于* struct Student,而逗号后面的STU,它是等价于struct Student,这个 “ * ”只影响逗号前面的。
因为这个*PSTU=* struct Student,故它能指向结构体里面的数据。