MFC 入门笔记(一):给含指针成员的结构体初始化0的方法

本文介绍了在C语言中使用结构体时,特别是涉及指针成员的初始化问题。作者提倡先为结构体成员单独分配内存并初始化,然后通过指针指向,避免了普通初始化方法可能导致的内存未分配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用结构体的时候,往往需要用到指针成员、结构体指针成员,这时,普通的初始化方法:

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结构体的初始化。

如果有更好的方法,请在评论区指教~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值