C++ 结构变量={0}表示法
我正在查看windows socket API,它使用:C++ 结构变量={0}表示法,c++,C++,我正在查看windows socket API,它使用: WSADATA wsaData = {0}; 这个{0}到底是做什么的 WSADATA wsaData = {0}; WSADATA wsaData = {}; // This is also allowed, and is the same as the above one 表示将结构中的所有成员初始化为0 这也适用于阵列。例如: int numbers[20] = {0} numbers数组中的所有元素都初始化为0 表示将结构中
WSADATA wsaData = {0};
这个{0}到底是做什么的
WSADATA wsaData = {0};
WSADATA wsaData = {}; // This is also allowed, and is the same as the above one
表示将结构中的所有成员初始化为0
这也适用于阵列。例如:
int numbers[20] = {0}
numbers
数组中的所有元素都初始化为0
表示将结构中的所有成员初始化为0
这也适用于阵列。例如:
int numbers[20] = {0}
numbers
数组中的所有元素都被初始化为0
这意味着您正在将结构中的每个元素初始化为0
即使你写信
WSADATA wsaData = {};
然后它还会将struct的每个成员初始化为零
旁注:
静态存储持续时间对象始终初始化为零。根据标准:
具有静态存储持续时间(3.7.1)的对象应初始化为零
(8.5)在进行任何其他初始化之前。零初始化
使用常量表达式进行初始化和初始化统称为
静态初始化;所有其他初始化都是动态的
初始化。POD[普通旧数据]类型(3.9)的对象
使用常量表达式初始化的静态存储持续时间(5.19)
应在进行任何动态初始化之前进行初始化。
在中的命名空间范围中定义了静态存储持续时间的对象
应初始化相同的翻译单元和动态初始化
按照其定义在译文中出现的顺序
单元[注:8.5.1描述了聚合成员的排序
初始化。描述了局部静态对象的初始化
第6.7款。]
这意味着您正在将结构中的每个元素初始化为0 即使你写信
WSADATA wsaData = {};
然后它还会将struct的每个成员初始化为零
旁注:
静态存储持续时间对象始终初始化为零。根据标准:
具有静态存储持续时间(3.7.1)的对象应初始化为零
(8.5)在进行任何其他初始化之前。零初始化
使用常量表达式进行初始化和初始化统称为
静态初始化;所有其他初始化都是动态的
初始化。POD[普通旧数据]类型(3.9)的对象
使用常量表达式初始化的静态存储持续时间(5.19)
应在进行任何动态初始化之前进行初始化。
在中的命名空间范围中定义了静态存储持续时间的对象
应初始化相同的翻译单元和动态初始化
按照其定义在译文中出现的顺序
单元[注:8.5.1描述了聚合成员的排序
初始化。描述了局部静态对象的初始化
第6.7款。]
它将结构中的所有成员初始化为0。它将结构中的所有成员初始化为0。您熟悉windows套接字API吗?您知道WSASTARTUP是否初始化WSADATA结构吗?它接受对它的引用,而API文档并没有真正说明。@user3735829对不起,我不是。你可以问另一个问题来得到专业的答案。幸运的是,你实际上可以去
={}代码>。未提及的任何成员都是初始化的值。在C中,你至少需要提到一个成员,但是C++中,你不必感谢。您熟悉windows套接字API吗?您知道WSASTARTUP是否初始化WSADATA结构吗?它接受对它的引用,而API文档并没有真正说明。@user3735829对不起,我不是。你可以问另一个问题来得到专业的答案。幸运的是,你实际上可以去={}代码>。未提及的任何成员都是初始化的值。在C中,你至少需要提到一个成员,但是在C++中你不需要注意。<代码> {} /Cuth>需要C++ 11,其中代码“> { 0 } /Cuth>也适用于旧的编译程序。注意<代码> {} /Cuth>需要C++ 11,其中代码> { 0 } /CODE >也适用于旧编译器。