2D阵列

时间:2016-04-30 20:09:22

标签: c++ arrays initialization

要初始化2D数组,通常我们可以这样做:

int matrix[3][4] = { {1,1,1,1}, {2,2,2,2}, {3,3,3,3} };

但是,当我使用各种组合测试时,以下代码确实编译出我的期望:

int matrix[3][4] = {1,2,3,4,5,6,7};

当我以2D表格形式输出输出时,我得到:

1,2,3,4,
5,6,7,0,
0,0,0,0,

我理解为什么剩下的值都是零。

我的问题是:这是通过假设超过行数的数字将始终" flow"来初始化2D数组的合法方法之一。到下一行?或者这是我在C ++中应该避免的另一个缺陷吗?

1 个答案:

答案 0 :(得分:6)

是的,这完全没问题。引用the unofficial cppreference

  

嵌套初始化程序列表周围的大括号可能会被删除   (省略),在这种情况下,必要的初始化子句数是多少   用于初始化相应的每个成员或元素   subaggregate,以及随后的初始化子句用于   初始化对象的以下成员。

  

如果初始化子句的数量小于   成员或初始化列表完全为空,其余成员   由空列表初始化,执行值初始化。

初始化int的值会将其设置为0