首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中初始化结构数组?

如何在C中初始化结构数组?
EN

Stack Overflow用户
提问于 2011-04-04 16:20:13
回答 4查看 6.8K关注 0票数 4

场景是,我有嵌套的结构定义,并且我有一个包含10个这样的结构的数组。我想要的是将父结构和子结构的每个元素都初始化为零。代码如下:

代码语言:javascript
复制
struct PressureValues
{

   float SetPressure;
   float ReadPressure;

};

struct CalibrationPoints
{

   float SetTemperature;
   struct PressureValues PressurePoints[10];

};

extern volatile struct  CalibrationPoints code IntakeCalibrationPoints[10];

extern volatile struct  CalibrationPoints code DischargeCalibrationPoints[10];

我知道使用循环将每个结构元素初始化为零的冗长方法,但我正在寻找一种将所有元素初始化为零的简短方法。或者结构数组(只包含浮点数)的默认初始值是多少,是零还是任意一个随机值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-04 16:25:01

代码语言:javascript
复制
volatile struct CalibrationPoints IntakeCalibrationPoints[10] = { { 0 } };
volatile struct CalibrationPoints DischargeCalibrationPoints[10] = { { 0 } };

这会将所有元素初始化为零。

这样做的原因是,当您显式初始化数据结构的至少一个元素时,默认情况下,所有未指定初始化器的其余元素将被初始化为零。

票数 11
EN

Stack Overflow用户

发布于 2011-04-04 16:27:37

首先,我认为你对“intialize”的含义有一个错误的理解。

你看,当系统给你的程序分配内存时,它不会在最后一个使用它的程序后进行清理。所以,你可以得到零,你可以得到看似随机的值,等等。

现在,你的结构不能从随机设置的数据中受益,不是吗?所以你初始化它们:给它们的成员赋予有意义的值,这对你的数据是有意义的。这可以是全零,也可以不是。可以说,初始化就是设置一个有意义的默认

至于您的问题,您可以使用memset()快速填充内存。干杯!希望我能帮上忙。

memset()http://www.cplusplus.com/reference/clibrary/cstring/memset/

票数 2
EN

Stack Overflow用户

发布于 2011-04-04 16:25:29

您可以使用

代码语言:javascript
复制
memset(IntakeCalibrationPoints, 0x00, sizeof( IntakeCalibrationPoints))

例如

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5536077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档