c语言的typedef

断了今生、忘了曾经 提交于 2020-01-06 17:13:35

【推荐】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来定义别名!!!完美。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!