结构变量= {0}表示法

时间:2014-06-13 05:14:31

标签: c++

我正在查看Windows套接字API,它使用:

WSADATA wsaData = {0};

这个{0}到底是做什么的?

2 个答案:

答案 0 :(得分:4)

这意味着您要将结构中的每个元素初始化为0。

即使你写了

WSADATA wsaData = {};

然后它也会将struct的每个成员初始化为零。

旁注:

静态存储持续时间对象始终初始化为零。从标准:

  

具有静态存储持续时间(3.7.1)的对象应进行零初始化   (8.5)在进行任何其他初始化之前。零初始化   并且统一调用具有常量表达式的初始化   静态初始化;所有其他初始化是动态的   初始化。 POD [普通旧数据]类型(3.9)的对象   使用常量表达式初始化静态存储持续时间(5.19)   应在任何动态初始化发生之前初始化。   具有静态存储持续时间的对象在命名空间范围中定义   应初始化相同的翻译单元并动态初始化   按照其定义在翻译中出现的顺序排列   单元。 [注意:8.5.1描述了聚合成员的顺序   初始化。描述了本地静态对象的初始化   在6.7。]

答案 1 :(得分:2)

WSADATA wsaData = {0};
WSADATA wsaData = {}; // This is also allowed, and is the same as the above one

表示将结构中的所有成员初始化为0

这也适用于数组。例如:

int numbers[20] = {0}

numbers数组中的所有元素都初始化为0