C语言结构体的初始化
时间: 2024-10-08 10:14:53 浏览: 47
浅谈C语言中结构体的初始化
5星 · 资源好评率100%
在C语言中,结构体(struct)是用来组合不同类型的数据成员的复合数据类型。初始化一个结构体时,可以直接为每个成员赋初值,也可以使用花括号 {} 或者 = 符号的方式一次性初始化所有成员。
### 直接初始化每个成员:
```c
// 定义结构体
typedef struct {
int num;
char name[20];
} Person;
// 初始化并声明变量
Person john = {1, "John Doe"}; // 数字num为1,name为"John Doe"
```
### 使用花括号 {}
```c
Person another_person = {
.num = 2,
.name = "Jane Smith"
}; // 同样的效果,用点`.`来指定结构体成员
```
### 使用 = 符号
如果你的结构体有一个默认的初始化值(如所有的成员都是整型或字符数组),也可以直接使用 = 符号:
```c
// 如果结构体没有显式定义成员初始值,则可以这样使用
Person third_person = {}; // 所有成员都将被默认初始化
```
如果结构体中有指针或者动态分配的内存,记得手动进行相应的初始化。
需要注意的是,在C语言中,不初始化的结构体会根据其成员的存储类别(静态、自动、外部)获得默认值。例如,未初始化的`int`成员可能成为不确定值(通常称为垃圾值),而未初始化的`char`数组则通常是零填充的。
阅读全文