为原有数据类型起一个别名而已,并没有凭空出现一个新的内存形式。
int a = 170; // 根本看不出来a是什么含义,只知道开辟了一段int大小的内存,放了170进去
int b = 3600; // 根本看不出来b是什么含义
// 代码可读性非常差!
typedef int len_t;
typedef int time_t;
len_t a = 170; // 大致可以猜出a描述的是一个长度
time_t b = 3600; // 大致可以猜出b描述的是一个时间
// 这样的代码可读性好了很多!
// _t:typedef 的意思。看到_t,就说明是使用typedef定义的外号。
用处:
建议不再使用通用的关键字(int等),而更多地使用一些见名知义的关键字,让可读性更好。——使用typedef
-
typedef与指针结合使用后,会非常非常方便和清晰,应用会更加广阔。
指针如果多了,就是一堆*
,非常不方便阅读和维护。使用typedef后,定义一些变量会更加方便。typedef char* name_t; // name_t是一个指针类型的名称/别名,指向了一个char类型的内存。 name_t abc;
例1:
#include <stdio.h>
typedef struct Student
{
int sid;
char name[100];
char sex;
} ST;
int main()
{
ST st; //struct Student st;
ST * ps = &st; // struct Student *ps = &st;
st.sid = 200;
printf("%d\n",st.sid);
return 0;
}
例2:
#include <stdio.h>
typedef struct Student
{
int sid;
char name[100];
char sex;
}* PSTU, STU;
// PSTU等价于struct Student *
// STU等价于struct Student
int main()
{
STU st;
PSTU ps = &st;
ps->sid = 200;
printf("%d\n",ps->sid);
return 0;
}
例3:
#include <stdio.h>
typedef struct Student
{
int sid;
char name[100];
char sex;
} STU, *PSTU;
// STU等价于struct Student
// PSTU等价于struct Student *
int main()
{
STU st;
PSTU ps = &st;
ps->sid = 200;
printf("%d\n",ps->sid);
return 0;
}