我正在看windows套接字API,它使用:
WSADATA wsaData = {0};
这个{0}到底是做什么的?
这意味着将结构体中的每个元素初始化为0。
即使你写
WSADATA wsaData = {};
则将struct的每个成员初始化为0。
边注:
静态存储时间对象总是初始化为零。来自标准:
具有静态存储时间(3.7.1)的对象必须进行零初始化(8.5)在任何其他初始化发生之前。Zero-initialization和用常量表达式初始化的统称静态初始化;其他所有初始化都是动态的初始化。POD[普通旧数据]类型(3.9)的对象用常量表达式初始化静态存储持续时间(5.19)应在任何动态初始化发生之前初始化。类的名称空间作用域中定义具有静态存储持续时间的对象应初始化相同的翻译单元和动态初始化按照它们的定义在译文中出现的顺序单位。[注:8.5.1描述了聚合成员的顺序。初始化。描述了局部静态对象的初始化
6.7。)
WSADATA wsaData = {0};
WSADATA wsaData = {}; // This is also allowed, and is the same as the above one
表示将结构体中的所有成员初始化为0
。
这也适用于数组。例子:
int numbers[20] = {0}
numbers
数组中的所有元素初始化为0