初始化多维数组:{0}与{{{0}}}

Mic*_*ers 25 c arrays initialization

在我正在分析的C代码中,有很多多维(struct)数组,用不同数量的大括号初始化,例如{{0}}{{{0}}}.

但是,替换它们{0}也很有效.

使用一组或多组花括号({})出现之间是否存在(功能)差异?

Jen*_*edt 15

不,没有功能差异.C标准允许省略中间{}.特别是,表单{ 0 }是一个初始化程序,可用于所有数据类型.


250*_*501 8

您有两个选择:要么{ 0 }适用于任何聚合或联合类型,零要初始化每个成员,要么使用必须正确对应所有成员的正确形式.

  • 不."{0}"甚至适用于标量类型.`{0}`和`{{{0}}}`之间没有区别. (4认同)
  • @PP然后你应该提到这一点.第一条评论中的第二句话说{0}和{{{0}}}之间没有区别,但只有具有3个维度的数组才有效,这是OP没有指定的. (4认同)
  • @PP` {0}`适用于标量类型,但我从来没有说过它没有. (3认同)
  • `{0}`是"通用初始化器",适用于C中的每个类型.为什么你在谈论`{{0}}`作为`int`的初始化器?OP的问题是`{0}`是否适合作为多维数组的初始化器.答案是:要么是好的. (2认同)