场景是,我有嵌套的结构定义,并且我有一个包含10个这样的结构的数组。我想要的是将父结构和子结构的每个元素都初始化为零。代码如下:
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];我知道使用循环将每个结构元素初始化为零的冗长方法,但我正在寻找一种将所有元素初始化为零的简短方法。或者结构数组(只包含浮点数)的默认初始值是多少,是零还是任意一个随机值?
发布于 2011-04-04 16:25:01
volatile struct CalibrationPoints IntakeCalibrationPoints[10] = { { 0 } };
volatile struct CalibrationPoints DischargeCalibrationPoints[10] = { { 0 } };这会将所有元素初始化为零。
这样做的原因是,当您显式初始化数据结构的至少一个元素时,默认情况下,所有未指定初始化器的其余元素将被初始化为零。
发布于 2011-04-04 16:27:37
首先,我认为你对“intialize”的含义有一个错误的理解。
你看,当系统给你的程序分配内存时,它不会在最后一个使用它的程序后进行清理。所以,你可以得到零,你可以得到看似随机的值,等等。
现在,你的结构不能从随机设置的数据中受益,不是吗?所以你初始化它们:给它们的成员赋予有意义的值,这对你的数据是有意义的。这可以是全零,也可以不是。可以说,初始化就是设置一个有意义的默认。
至于您的问题,您可以使用memset()快速填充内存。干杯!希望我能帮上忙。
memset():http://www.cplusplus.com/reference/clibrary/cstring/memset/
发布于 2011-04-04 16:25:29
您可以使用
memset(IntakeCalibrationPoints, 0x00, sizeof( IntakeCalibrationPoints))例如
https://stackoverflow.com/questions/5536077
复制相似问题