typedef
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。
具体区别在于:
若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;
若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;就是自定义了一种数据类型。比如整型,用的时候是int age=10;int是数据类型,age是整型变量。同样typedef就是一种可以自定义类型的关键字,这样你就可以自定义类型了。
- typedef 创建的符号只能用于数据类型,不能用于值。而#define 创建的符号可以用于值。
- typedef 是由编译器来解释,而不是预处理器。
- typedef 使用起来更加灵活。
下面使用typedef定义一个数据类型
int main()
{
typedef unsigned char BYTE;
BYTE c = 10;
printf("%d \r\n",c);
system("pause");
return 0;
}
#include <stdio.h>
typedef struct NUM
{
int a;
int b;
}DATA,*PTRDATA;
int main()
{
DATA data; //定义结构体变量
PTRDATA pdata; //定义结构体指针
pdata=&data; //结构体指针指向结构体变量
data.a=100;
data.b=500;
printf("a=%d\nb=%d\n",data.a,data.b);
printf("a=%d\nb=%d\n",pdata->a,pdata->b);
return 0;
}
提高代码可移植性:由于不同的编译器对数据类型的定义可能存在差异,使用 typedef 可以提高代码的可移植性。
例如,如果使用 short int 类型来定义变量,可能在不同的编译器上会有不同的长度,导致代码的可移植性受到影响。使用 typedef 定义一个新的类型名称,可以确保该类型在不同的编译器上都具有相同的长度和语义。
总之,typedef 是一个非常有用的关键字,它可以提高代码的可读性、简化复杂的类型声明,以及提高代码的可移植性。