Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中初始化结构数组?_C - Fatal编程技术网

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

如何在C中初始化结构数组?,c,C,场景是,我有嵌套的结构定义,我有一个包含10个这样的结构的数组。我想要的是用零初始化父结构和子结构的每个元素。代码如下: struct PressureValues { float SetPressure; float ReadPressure; }; struct CalibrationPoints { float SetTemperature; struct PressureValues PressurePoints[10]; }; extern vola

场景是,我有嵌套的结构定义,我有一个包含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];
我知道使用循环将每个结构元素初始化为零的冗长方法,但我正在寻找将所有元素初始化为零的简短方法。或者结构数组的默认初始化值是什么(仅包含浮点数),是零还是任何随机值

volatile struct CalibrationPoints IntakeCalibrationPoints[10] = { { 0 } };
volatile struct CalibrationPoints DischargeCalibrationPoints[10] = { { 0 } };
这会将所有元素初始化为零

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

您可以使用

memset(IntakeCalibrationPoints, 0x00, sizeof( IntakeCalibrationPoints))
例如,您可以尝试:

struct CalibrationPoints struct;
memset ( struct, 0, sizeof(CalibrationPoints));
` 

首先,我认为你对“初始化”的含义有错误的理解

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

现在,您的结构不能从随机设置的数据中获益,是吗?因此,您可以初始化它们:为它们的成员提供有意义的值,这些值对您的数据有意义。这可以是全零,也可以不是初始化可以说是设置了一个有意义的默认值

至于您的问题,您可以使用
memset()
快速将内存归零。干杯希望我能帮忙


memset()

+1,
{0}
技巧是最好、最简单的方法。它实际上并没有将结构的所有数组元素初始化为零。实际上,它仅将数组中第一个结构的第一个元素初始化为零。所以它不起作用并非所有值都使用1进行初始化。我的意思是,如果我尝试除零以外的任何值,那么您的解决方案是否仍然有效?@Asad:此技巧仅适用于零-未显式初始化的元素的默认值为零。@Paul,感谢您的回答。但是请让我知道,如果我不使用任何默认值初始化这些结构数组,那么变量的默认值将为零值。因为有人告诉我,除非显式初始化,否则C默认未初始化的值是随机值。我认为这里对什么是“初始化”有潜在的混淆。下面是简短的解释!如果你已经知道了,那么我向你道歉。