c语言的typedef

c语言的typedef真是个好东西

一般说来,当我们使用定义结构体struct的时候,我们要定义结构体变量,需要使用这样的方式:

http://www.1994july.club/

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)); http://www.1994july.club/?paged=2 

果然,写法变简单了!!!,可以说这其实是c语言的缺陷,所以才要使用typedef来定义类型别名的!!!

有时候,我们可以发现,有的库,在h文件定义结构体,有的也在c文件内定义结构体,为什么要这样呢?因为c文件内定义的结构体不会被其他人引用,而头文件内可以被其他文件引用,所以,在c文件内定义结构体就是为了隐藏定义,再在h文件内使用typedef来定义别名!!!完美。

你可能感兴趣的:(c语言的typedef)