声明BufferData Data [16] = {0}是什么意思

时间:2018-06-04 03:20:59

标签: c initialization

我正在浏览一个C dll并遇到一个结构

BufferData{int Len; int Ant; unsigned char Data[512]}

然后通过创建数组

来初始化结构
BufferData Data[16] = {0}

我不确定这是什么,因为Data是一个结构数组。

1 个答案:

答案 0 :(得分:6)

这是C初始化器的一个怪癖。 C没有“半初始化”变量;变量未初始化或完全初始化。

如果初始化程序指定的值少于结构或数组具有成员的值,则所有剩余的元素将以递归方式隐式初始化为零。

因此{0}是一个通用初始值设定项:它将第一个字段(无论可能是什么)设置为0,所有剩余字段(如果有)也自动设置为0

在您的情况下,第一个字段是Data的第一个元素的第一个成员,即我们明确设置Data[0].Len并依赖其他所有内容的零初始化。