声明 "BufferData Data[16] = {0}" 的含义是什么?

3
我正在处理一个 C 动态链接库,发现了一个结构体。
BufferData{int Len; int Ant; unsigned char Data[512]}

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

BufferData Data[16] = {0}

鉴于Data是一个结构体数组,我不确定它的作用。


2
它正在创建一个由16个元素组成的数组Data,并将所有内容设置为0。因此,对于每个元素,每个成员现在都将是0。 - Unmanned Player
BufferData Data[16] = {{0}} - purec
1个回答

6
这是C语言初始化器的一个特性。C语言没有“半初始化”的变量;变量要么未初始化,要么完全初始化。
如果初始化器指定的值少于结构体或数组成员数,所有剩余元素都将递归地隐式初始化为零。
因此,{0}是一种通用的初始化器:它将第一个字段(无论是什么)设置为0,并自动将所有剩余字段(如果有)设置为0。
在您的情况下,第一个字段是Data的第一个元素的第一个成员,即我们明确设置Data[0].Len并依靠其他所有内容的零初始化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接