结构体成员是结构体指针在定义的时候初始化
时间: 2023-07-21 18:23:12 浏览: 102
浅谈C语言中结构体的初始化
结构体成员是结构体指针在定义的时候可以初始化,也可以不初始化。如果结构体成员是结构体指针类型,可以在定义时进行初始化,也可以在后续程序中进行初始化。例如:
```c
struct Date {
int year;
int month;
int day;
};
struct Student {
char *name;
int age;
struct Date *birthday;
};
// 定义结构体变量并初始化
struct Date d1 = {2000, 1, 1};
struct Student stu1 = {"Tom", 18, &d1};
// 定义结构体变量并初始化指针成员为 NULL
struct Student stu2 = {"Jerry", 19, NULL};
// 定义结构体指针变量并动态分配内存,并初始化指针成员
struct Student *pStu = (struct Student *)malloc(sizeof(struct Student));
pStu->name = "John";
pStu->age = 20;
pStu->birthday = (struct Date *)malloc(sizeof(struct Date));
pStu->birthday->year = 2001;
pStu->birthday->month = 2;
pStu->birthday->day = 2;
```
需要注意的是,如果结构体成员是结构体指针类型,并且在定义时没有进行初始化,那么它所指向的空间是未知的,需要在后续程序中进行初始化才能使用。同时,如果结构体成员是结构体指针类型,还需要注意内存分配和释放的问题。
阅读全文