我在C++中有如下二维数组:
int array[2][5] = {
{1,2,3,4,5},
{6,7,8,9,10}
};当我访问数组的索引时,结果值当然是5,但是当我尝试像这个array1这样的数组访问索引时,结果值也是5。
有人能解释吗?谢谢
发布于 2017-12-13 06:27:21
它与索引的计算方式有关,内存本身是一组单词。当使用二维索引I时,它被映射为i*size2+j (如果数组的大小为size1)。
因此,当计算[0][4]和[1][-1]时,得到相同的值(0*5+4=4,1*5-1=4)。

发布于 2017-12-13 06:22:46
这实际上是不明确的行为。你看到5的原因或多或少是偶然的。原因是您正在创建固定长度的二维整数数组,该数组是在内存中按顺序创建的。因此,[1][-1]是在一些(也许是大多数?)实现等效于[0][4]的内存位置。在内存中,在您的示例中,它看起来类似于序列1,2,3,4,5,6,7,8,9,10。但不能保证或定义多维定长阵列总是像你所观察到的那样是连续的。
https://stackoverflow.com/questions/47786666
复制相似问题