typedef的好处(为什么每次定义结构体时都要用到typedef 呢不知道这样做有什么好处我觉得不用也一样吧请帮忙举例解释)

本文目录
- 为什么每次定义结构体时都要用到typedef 呢不知道这样做有什么好处我觉得不用也一样吧请帮忙举例解释
- 求解释typedef struct node结构体的作用
- typedef 的一种用法是简单的名字替换 如typedef int INTEGER;意思是将int型定义为INTEGER,二者等价
- 我想问一下最后的MSG,和*PMSG是干什么的,还有就是在c语言中 定义一个结构体不需要typedef啊
- 数据结构中为什么要用typedef char elemtype ,这样有什么好处,
为什么每次定义结构体时都要用到typedef 呢不知道这样做有什么好处我觉得不用也一样吧请帮忙举例解释
typedef 是用来自定义类型(或指定类型别名)的,在 C 中(注意和 C++ 的区别),经常会有这样的写法:
typedef struct { int a; int b; int c; } ST; // 不命名定义结构体
typedef struct something{ int a; int b; int c; } ST; // 命名定义结构体
其实就是给 struct something 定义了别名 ST,这样在程序中定义结构体变量时,就可以直接写成
ST st1;
如果不用 typedef ,命名的结构体就要写成 struct something st1,而不命名的就不能再定义结构体变量了。
求解释typedef struct node结构体的作用
首先你要明白typedef的作用。typedef是C语言里的一个关键字,用来给一个类型别名(化名)。比如
typedef int size_t;
typedef struct node Node;
第一个例子给内置类型int一个别名size_t。第二个例子给struct node一个别名Node。这里你看到了typedef的两个常用情况。第一个例子用以给一个通用类型更具化的别名,这往往会增加你的代码的可读性。第二个例子用以简化代码的繁复性,每当你需要声明一个struct node变量的时候,你可以直接用Node。
你的例子
typedef struct node {
struct library data;
struct node *next;
} Node, * Link;
只是一个比较紧凑的写法,等价于如下写法:
typedef struct node Node, * Link;
struct node {
struct library data;
Link next; // Node * next;
}
注意我把typedef置于结构体node的定义之前(这是一个C成语)。它的好处是C编译器会先看见别名定义,所以在结构体node的定义里面我就已经可以用其别名Link或者Node来声明变量或指针了。你可以把typedef置于结构体node的定义之后,写作
struct node {
struct library data;
struct node * next;
}
typedef struct node Node, * Link;
但这样你就不能在node的定义里面用定义完才给的别名Node或Link了。所以你看到里面next的声明用的是struct node *。
最后,
typedef struct node Node, * Link;
仍然是一个紧凑的写法,等价于:
typedef struct node Node;
typedef struct node * Link;
第一条语句给struct node(结构体node本身)一个别名Node。第二条语句给struct node *(指向node结构体的指针)一个别名Link。
typedef 的一种用法是简单的名字替换 如typedef int INTEGER;意思是将int型定义为INTEGER,二者等价
这个例子举的不好,所以造成了困惑。
typedef的主要意义在于告诉读代码的人,这个类型是干嘛用的。C语言自带的也有,比如size_t, time_t,一看就知道前者是计算字节大小的,后者是表示时间的,增加代码的可读性。
我想问一下最后的MSG,和*PMSG是干什么的,还有就是在c语言中 定义一个结构体不需要typedef啊
MSG,和*PMSG是两个结构体类型的别名,也即在使用typedef定义后的名字可以用他们来声明其他同类型的变量。其中:
MSG是声明结构体用的,声明的这个结构体变量类型与struct tagMSG声明的是一样的。
*PMSG是声明结构体指针,同样这个跟直接用struct tagMSG *也是一致的。
使用typedef的好处是增加程序可读性、移植性以及书写方便等。
比如有如下定义:
typedef usigned char uint8;
以后再需要使用无符号8位数据的时候,直接使用uint8声明就可以了。无需写那么多东西,并且一看就明白。
uint8 a;
数据结构中为什么要用typedef char elemtype ,这样有什么好处,
我的理解是能使得程序更容易被修改,在C++中,基本类型都可以用cin》》elemtype来输入,cout《《elemtype来输出,比如数据类型变成int的话,在全局只要修改这一处(把char改为int)就行了。

更多文章:
jfreechart 极坐标设置线条颜色(各位,怎样修改 matlab 中极坐标生成的图像线条的宽度求程序指导! 谢谢了!!!)
2025年8月9日 12:00
appear后面可以加名词吗(高考英语备考之 appear的用法)
2025年9月17日 03:30
django框架安装过程(京东云擎怎么搭建django 框架)
2025年7月24日 02:00
index加match函数出错(excel中INDEX和MATCH函数出现的问题)
2026年1月3日 23:00
routes插件(模拟火车2019机车插件和线路插件安装在哪里怎么激活求大神解答!!)
2025年7月11日 16:45
手机java运行库下载(三星C3300K手机下载JAVA游戏详细方法)
2026年1月12日 09:00
雅马哈音响portable(为什么存储卡里的歌在可插卡蓝牙音响上有些能放,有些不能放)
2026年8月5日 16:15
易语言源码忘记保存奔溃怎么找回(易语言源码丢失,用什么恢复软件恢复后可以用)
2025年12月9日 05:45















