今天讲解typedef

C 语言提供了 typedef 关键字,我们可以用它来创建数据类型别名


1、使用typedef简化结构体关键字 (struct)
还记得有一次课堂作业曾经那个学生成绩管理系统中

struct student
{
char name[10];
double yuwen;
double math;
double english;
double sum;
double average;
};

double y_average,m_average,e_average;

void s_average(struct student s[]);
void sum(struct student s[]);
void meike_average(struct student s[]);
void paixu(struct student s[]);
void paixu(struct student s[]);
int main()
{
struct student s[100];
int i,j;
/*省略以下所有代码*/
}

很明显上图中每次调用时都需要使用struct student s[].???
这样会显得很麻烦,所以我们可以用typedef来简化这个过程
第一种

struct student
{
char name[10];
double yuwen;
double math;
double english;
double sum;
double average;
};
typedef struct student s[1]={“略略略”,1,2,3,4,5};//低版本中不支持
因此在后面调用时可以直接使用s
函数体中也可以简化为void s_average(s[]);

为了方便我们通常使用第二种
第二种

typedef struct student
{
char name[10];
double yuwen;
double math;
double english;
double sum;
double average;
}s;
所以可以用 s s[100];等价于struct student s[100]

2.关于数据类型的一些问题

有些时候我们想要规定两个或者以上的int *类型
如果这样 int *p1,p2 就是错误的,因为这个意思是P1属于int *,p2为int
所以正确做法是int *p1,*p2;

这个时候typedef作用便来了
tyepe int * haogege ;
//这样便可以直接

3.可以让代码 移植性提高

void p1()
{
long long x1;
long long x2;
}
当我们只用 其他编译器打开时候可能不支持long long类型这时候就会很麻烦
所以我们可以
typedef long long haogege;
void p2()
{
heogege x1;
haogege x2;
}
这样当我们需要替换掉所有long long类型的时候
只需要把typedef long long haogege中 long long改掉即可;

未完待续。。。。