在使用结构体的时候,往往需要用到指针成员、结构体指针成员,这时,普通的初始化方法:
typedef struct {
U32 nHour;
U32 nMin;
F64 nSec;
U32 nSecs;
U32 nSecs01;
}STime;// 结构体指针成员
typedef struct
{
STime* pSTime;
S32 speed;
F64 xSpeed;
F64 ySpeed;
F64 zSpeed;
F64 eSpeed;
F64 arrSpeed;
}SDHV;// 主结构体
SDHV aDHV = { 0 };// 一般的初始化方法,但在这里不合适,因为仍然未给pSTime分配内存
已经不适用,因为还是没有给pSTime分配内存
碰到这种情况我们可以先单独定义成员结构体变量,给他分配内存空间(直接赋0),再用对应的指针成员指向它。
SDHV aDHV = { 0 };// 目的是给除指针成员外的变量分配内存,初始化为0
STime aSTime = { 0 };// 单独定义结构体变量,分配内存,初始化为0
aDHV.pSTime = &aSTime;// 再用对应的指针成员指向它的地址,这时二者就等效了
这样就实现了aDHV结构体的初始化。
如果有更好的方法,请在评论区指教~