C struct array默认值

时间:2015-07-13 12:34:55

标签: c arrays struct initialization

我有这个结构:

typedef struct {
    GPIO_TypeDef* GPIO_Reg;
    uint16_t GPIO_Pin;
    uint16_t status;
} PinType;

然后,如果我声明这个数组:

PinType array[10];

数组中的PinType元素是用一些默认值初始化的吗?

例如,如果我写这个:

printf("%d", array[1].status);

我应该看0作为输出吗?或者,在我声明数组之前,初始值取决于内存的内容?

2 个答案:

答案 0 :(得分:4)

这个答案取决于变量的范围。

  • 如果array是全局的,那么它将自动初始化。
  • 如果arraystatic,则所有元素都会自动初始化为0
  • 如果array属于automatic存储空间,则无法自动初始化。

答案 1 :(得分:2)

除非变量为static或全局,否则结构成员初始化。

事实上,使用未初始化的成员是C中未定义的行为。

memset使用零填充数组是惯用的。