C++ 在C+中将多维数组初始化为零+;

C++ 在C+中将多维数组初始化为零+;,c++,C++,我通过inta[4][4]={0}将2D数组初始化为零,当我打印它时,inta[3][4]=1,a[4][1]=a[4][2]=a[4][3]=1和a[4][4]=2。这里怎么了?我希望将所有值都设置为零。a[3][4]和a[4]都是未定义的行为,因为它们试图在边界之外访问相应的数组。您正在访问数组边界之外的数据 由于以下声明,数组的大小为4*4(16个元素): a[4][4]={0}; 当您想要访问它们时,必须考虑这样一个事实:数组中最低的元素是[0],而不是[1]。因此,必须通过索引0-3

我通过
inta[4][4]={0}
将2D数组初始化为零,当我打印它时,
inta[3][4]=1,a[4][1]=a[4][2]=a[4][3]=1
a[4][4]=2
。这里怎么了?我希望将所有值都设置为零。

a[3][4]和
a[4]
都是未定义的行为,因为它们试图在边界之外访问相应的数组。

您正在访问数组边界之外的数据

由于以下声明,数组的大小为4*4(16个元素):

a[4][4]={0};
当您想要访问它们时,必须考虑这样一个事实:数组中最低的元素是
[0]
,而不是
[1]
。因此,必须通过索引
0-3
访问大小为
[4]
的数组


索引4超出了数组范围,因此将导致未定义的行为。

要达到[4][4]的数量,应调用[3][3]。计算机中的数字从0开始。[您要的号码]-1=[您要拨打的号码]
&您尚未为调用的[4][4]定义任何数量,因此它是内存中其他部分的数量…

这些部分不是数组的一部分。更明确地说,大小为4的数组具有从0到3的索引。。。因此,您可以合法访问的最后一个元素是
a[3][3]
(第一个元素是
a[0][0]
)。