【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
c语言的typedef真是个好东西
一般说来,当我们使用定义结构体struct的时候,我们要定义结构体变量,需要使用这样的方式:
struct student
{
int id;
char name[128];
};
//声明结构体变量
struct student s1;
//声明结构体指针且分配内存
struct student * p_stu = (struct student*)malloc(sizeof(struct student));
可以看到,使用结构体,要写非常多的冗余代码。
此时,我们可以定义别名,来简化这种写法,如下所示:
typedef struct student_s
{
int id;
char name[128];
} student;
student s1;
student p_str = (student*)malloc(sizeof(student));
果然,写法变简单了!!!,可以说这其实是c语言的缺陷,所以才要使用typedef来定义类型别名的!!!
有时候,我们可以发现,有的库,在h文件定义结构体,有的也在c文件内定义结构体,为什么要这样呢?因为c文件内定义的结构体不会被其他人引用,而头文件内可以被其他文件引用,所以,在c文件内定义结构体就是为了隐藏定义,再在h文件内使用typedef来定义别名!!!完美。
来源:oschina
链接:https://my.oschina.net/weiyue888999/blog/3152825