【问题标题】:What does = { 0 }; mean in a structure initialization in C?= { 0 }; 是什么意思?在C中的结构初始化中是什么意思?
【发布时间】:2020-07-17 17:33:44
【问题描述】:

如下设置结构体变量时:

WNDCLASSW wc = {0};

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

【问题讨论】:

  • 在 C 俚语中,这称为初始化器,因为它出现在定义变量的位置。这个{ 0 } 只对这样的初始化器有效,稍后对于正常的赋值这将是无效的。
  • 非常感谢 Jens 的澄清,完全有道理!

标签: c variables variable-assignment


【解决方案1】:

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

在大多数情况/架构中,这与将其所有内存设置为零相同。

【讨论】:

  • 非常感谢 Acorn 的回答,帮助了很多!
【解决方案2】:

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

对于空指针为“所有位为零”的平台(大多数平台)上的块作用域对象,它等效于 memset(&object,0,sizeof(object)); 并且编译器通常会生成这样的 memset 调用以进行 {0} 初始化,尤其是在这样的情况下初始化应用于更大的对象。

【讨论】:

  • 这是一个很好的答案!非常感谢 PSkocik,内容非常详细且内容丰富!
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 2011-12-24
  • 2019-12-08
  • 2011-09-09
  • 2013-03-09
  • 1970-01-01
  • 2011-08-12
相关资源
最近更新 更多