我正在查看Windows套接字API,它使用:
WSADATA wsaData = {0};
这个{0}到底是做什么的?
答案 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