在C语言中,struct 和 typedef struct 的区别主要在于 命名方式和使用的便利性。
typedef 为结构体定义了一个类型别名,从而可以在后续代码中更简洁地使用该类型,而不用每次都写 struct 关键字。
struct
使用 struct 定义结构体时,在声明变量时需要显式地加上 struct 关键字。
struct Point {
int x;
int y;
};
int main() {
struct Point p1; // 必须使用 "struct Point"
p1.x = 10;
p1.y = 20;
return 0;
}
特点:
- 定义时,Point 是结构体的标签,不能直接作为类型使用。
- 声明变量时,必须加 struct 关键字,如
struct Point p1;。
typedef struct
使用 typedef 和 struct 联合定义结构体时,可以为结构体定义一个别名,使得后续代码中可以直接使用该别名作为类型。
typedef struct Point {
int x;
int y;
} Point; // 给结构体类型定义别名 "Point"
int main() {
Point p1; // 直接使用 "Point" 类型
p1.x = 10;
p1.y = 20;
return 0;
}
特点:
- 定义时,同时为结构体定义了一个别名 Point。
- 声明变量时,不需要使用 struct 关键字,可以直接写
Point p1;。
| 特性 | struct | typedef struct |
|---|---|---|
| 定义的类型名称 | 需要使用 struct 关键字(例如 struct Point) | 可以直接使用别名(例如 Point) |
| 代码可读性和简洁性 | 需要多写 struct 关键字,代码较冗长 | 代码更简洁,适合大型项目或公共接口 |
1531

被折叠的 条评论
为什么被折叠?



