首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中访问带负索引的二维数组

在C++中访问带负索引的二维数组
EN

Stack Overflow用户
提问于 2017-12-13 06:13:34
回答 2查看 652关注 0票数 0

我在C++中有如下二维数组:

代码语言:javascript
复制
int array[2][5] = {
    {1,2,3,4,5},
    {6,7,8,9,10}
};

当我访问数组的索引时,结果值当然是5,但是当我尝试像这个array1这样的数组访问索引时,结果值也是5。

有人能解释吗?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-13 06:27:21

它与索引的计算方式有关,内存本身是一组单词。当使用二维索引I时,它被映射为i*size2+j (如果数组的大小为size1)。

因此,当计算[0][4][1][-1]时,得到相同的值(0*5+4=4,1*5-1=4)。

票数 2
EN

Stack Overflow用户

发布于 2017-12-13 06:22:46

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47786666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档