【问题标题】:Multidimensional array initialization brackets [duplicate]多维数组初始化括号[重复]
【发布时间】:2019-02-09 03:12:18
【问题描述】:
int a[][3]={{1,2,3},11,2,3,4,5};

int a[][3]={1,2,3,11,2,3,4,5};

这两者有什么区别吗?它们对于编译器是否相同?

【问题讨论】:

    标签: c multidimensional-array initialization


    【解决方案1】:

    由于6.7.8 Initialization, 20 (C99),我很确定它们是相同的:

    1. 如果聚合或联合包含属于聚合或联合的元素或成员, 这些规则递归地适用于子聚合或包含的联合。如果初始化器 子聚合或包含的联合以左大括号开头,初始化器由 该大括号及其匹配的右大括号初始化 子聚合或包含的联合。否则,列表中只有足够的初始化器是 考虑到子聚合的元素或成员或第一个成员 包含的联合;剩下的任何初始化器都用于初始化下一个元素或 当前子聚合或包含的联合所属的聚合的成员。

    您正在初始化一个子数组(大小为 3)。

    在第一个版本中,{1,2,3} 用于显式大括号。

    在第二个版本中没有大括号,因此接下来的三个值 (1,2,3) 取自初始化列表。

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      相关资源
      最近更新 更多