首页 > 解决方案 > 声明 BufferData Data[16] = {0} 是什么意思

问题描述

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

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

然后通过创建一个数组来初始化该结构

BufferData Data[16] = {0}

鉴于 Data 是一个结构数组,我不确定这是做什么的。

标签: cinitialization

解决方案


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

如果初始化器指定的值少于结构或数组的成员,则所有剩余元素都递归地隐式初始化为零。

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

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


推荐阅读