数组内存结构论证
发表于更新于
字数总计363阅读时长1分钟阅读量
前言
在《指针的使用及解析》中我们说明了数组的内存结构,在这里我们详细论证一下这个结构的合理性。
描述和论证
我们再来回顾一下数组的内存形式:
可以看到,一维数组的内存结构非常简单。而二维数组在排列时,会先将第一个一维数组全部排列到内存中,然后接着排列第二个一维数组,以此类推,直到所有数据都存放完毕。让我们用代码论证一下这个结构:
1 2 3 4 5 6 7 8 9 10 11 | int main() { int index[3][3] = { {0, 1, 2}, {3, 4, 5}, {6, 7, 8} }; for (int i = 0; i != 9; ++i) { printf("%d", index[0][i]); } return 0; }
|
小伙伴们可以试一下这个代码的运行结果是什么,显而易见,结果是012345678
。由此可见,上述的结构是合理的。
现在我们设:有一个三维数组array3d,访问时格式为:array3d[z][y][x],所以可得下图:
验证这个结构的代码也很简单:
1 2 3 4 5 6 7 8 9 10 | int main() { int a[2][2][2] = { {{0,1},{2,3}}, {{4,5},{6,7}}, }; for (int i = 0; i != 8; ++i) { printf("%d ", a[0][0][i]); } return 0; }
|
这段代码的输出结果是:0 1 2 3 4 5 6 7
。
创作不易,扫描下方打赏二维码支持一下吧ヾ(≧▽≦*)o
数组内存结构论证空 梦 | 山岳库博
更新于 2021-11-25
发布于 2021-11-25