多维数组初始化括号

时间:2018-09-04 06:46:49

标签: c multidimensional-array initialization

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

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

这两者之间有什么区别吗?编译器是否相同?

1 个答案:

答案 0 :(得分:2)

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

  
      
  1. 如果聚合或联合包含作为聚合或联合的元素或成员,   这些规则递归地应用于子集合或包含的联合。如果初始化   子集合或包含的并集以左大括号开头,初始化程序由   大括号及其匹配的大括号初始化了元素或成员   子集合或所包含的联合。否则,只有列表中足够的初始化程序是   考虑到子集合的元素或成员或第一个成员   所包含的工会;剩下的所有初始化程序都将初始化下一个元素,或者   当前子集合或包含的并集是其一部分的集合的成员。
  2.   

您正在初始化大小为3的子数组。

在第一个版本中,{1,2,3}由于使用了大括号而被使用。

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