C语言允许用户使用typedef关键字来自己定义习惯的数据类型,这里可以理解为给数据类型去一个别名,来替代系统默认的基本数据类型名称、数组类型名称、指针类型名称与用户自定义的结构类型名称等。
这里有一个好处,当你写一个比较大的项目时,如果不用typedef对其进行定义,当我们需要把一个数据类型 float 型修改为 double 型时,需要对其每一处代码进行修改,非常麻烦。
这部分在数据结构中用到的比较多,这里重点介绍一下 typedef 在结构体中的使用。
定义结构体名称
#include<stdio.h>
typedef int ZHANGSAN; //为int类型多取一个名字 int = ZHANGSAN
typedef struct Student{
int id;
char name[100];
char sex;
}ST;
int main(){
struct Student st1; // 等价于ST st1
struct Student * ps = &st1; // 等价于ST * ps, ps为指针变量指向了st1
ST st2;
st2.id = 123;
printf("%d", st2.id);
return 0;
}
定义一个结构体变量的不同方式:
定义指针类型名称
#include<stdio.h>
typedef struct Student{
int id;
char name[100];
char sex;
}* PST; //PST 等价于struct Student *
int main(){
struct Student st1; // 等价于ST st1
PST ps = &st1;
ps->id = 123;
printf("%d", ps->id);
return 0;
}
对上面代码的理解:
结构体和指针类型变量同时定义
#include<stdio.h>
typedef struct Student{
int id;
char name[100];
char sex;
}* PST, ST; //PST 等价于struct Student * ,ST等价于struct Student ST
int main(){
ST st1; // 等价于ST st1
PST ps = &st1;
ps->id = 123;
printf("%d", ps->id);
return 0;
}