我在C ++中有二维数组,如下所示:
int array[2][5] = {
{1,2,3,4,5},
{6,7,8,9,10}
};
当我访问数组[0] [4]的索引时,结果值当然是5。 但是当我尝试访问像这个数组[1] [ - 1]这样的数组索引时,我仍然感到困惑, 结果值也是5。
任何人都可以解释这个吗? 谢谢
答案 0 :(得分:2)
实际上是未定义的行为。你看到5的原因或多或少都是偶然的。原因是您正在创建在内存中按顺序创建的固定长度的二维整数数组。因此[1][-1]
在某些(可能是大多数?)实现上等同于[0][4]
的内存位置。在内存中,它看起来像你的情况下的序列1,2,3,4,5,6,7,8,9,10
。但是,不能保证或定义多维数字固定长度数组将像您观察到的那样始终是连续的。
答案 1 :(得分:2)