我有这个结构:
typedef struct {
GPIO_TypeDef* GPIO_Reg;
uint16_t GPIO_Pin;
uint16_t status;
} PinType;
然后,如果我声明这个数组:
PinType array[10];
数组中的PinType
元素是用一些默认值初始化的吗?
例如,如果我写这个:
printf("%d", array[1].status);
我应该看0
作为输出吗?或者,在我声明数组之前,初始值取决于内存的内容?
答案 0 :(得分:4)
这个答案取决于变量的范围。
array
是全局的,那么它将自动初始化。array
为static
,则所有元素都会自动初始化为0
。array
属于automatic
存储空间,则无法自动初始化。答案 1 :(得分:2)
除非变量为static
或全局,否则结构成员不初始化。
事实上,使用未初始化的成员是C中未定义的行为。
memset
使用零填充数组是惯用的。