什么 = { 0 };在 C 中的结构初始化中是什么意思?

What does = { 0 }; mean in a structure initialization in C?

当如下设置结构变量时:

WNDCLASSW wc = {0};

{0} 初始化对于 C 中的这个变量意味着什么?

它将结构的所有成员初始化为零。

在大多数 cases/architectures 中,这与将其所有内存设置为零相同。

由于 C 的初始化规则,它是一种通用初始化器: 它将通过将所有内容(每个成员递归地)设置为零来初始化数字或指针以及聚合(=structs/unions)或数组。

对于空指针为 "all bits zero" 的平台(大多数平台)上的块作用域对象,它等同于 memset(&object,0,sizeof(object)); 并且编译器通常会生成这样的 memset 调用 {0} 初始化,特别是当此类初始化应用于更大的对象时。