struct和typedef struct的区别
时间: 2023-05-02 22:04:50 浏览: 252
struct是C语言中定义结构体的关键字,它用来声明新的数据类型,可以包含多个不同类型的成员变量。而typedef struct则可以将struct定义的数据类型重命名为一个新的类型名,方便程序的编写和维护。
相关问题
struct和typedef struct
struct是C语言中的一种数据类型,用来定义结构体。结构体是一组不同类型的数据的集合。
typedef struct是对结构体类型进行定义的一种方式,可以简化结构体类型的定义。例如:
```
struct point {
int x;
int y;
};
```
可以通过typedef进行简化:
```
typedef struct {
int x;
int y;
} point;
```
这样就可以直接使用point来定义结构体变量了。
struct和typedef struct的差别
`struct` 和 `typedef struct` 在 C 语言中都是用于定义自定义数据类型的结构体的关键字,但它们之间有一些区别:
1. **普通 struct**:当你直接使用 `struct` 关键字声明一个结构体时,如 `struct MyStruct { ... }`,你得到的是一个全新的类型名 `MyStruct`,可以直接用于创建变量。这个新类型在内存中占据连续的空间,并存放指定的数据成员。
2. **typedef struct**:`typedef` 结构体是一个预处理器宏,它提供了一个别名给原始的结构体。例如,`typedef struct MyStruct MyNewType;` 将 `MyStruct` 定义为一个新的类型 `MyNewType`。现在你可以使用 `MyNewType` 来创建变量,但实际上底层还是相同的结构体。
所以,`typedef struct` 主要是为了给复杂的结构体起一个更易读的名字,让代码更清晰。同时,`typedef` 的结构体会节省一些字符空间,因为不需要每次引用都写出整个结构体名称。然而,`typedef` 不会改变结构体本身的存储特性。
阅读全文