《C语言程序设计 现代方法》
12.4.2 处理多维数组的行
处理二维数组的一行中的元素,该怎么办呢?再次选择使用指针变量p。为访问到第i行的元素,需要初始化p使其指向数组a中第i行的元素0:
p=&a[i][0];
----------------------------------------------------
问题:
1.数组在计算机的内部是以行序存储。也就是说,无论多少维数组,它都被存储为一行。
书本所说的第i行是什么意思?
2.如果,是三维或以上的数组,它的行是指什么?
------解决方案--------------------------------------------------------
内存是平坦的,一维的,这是物理上的。
所谓的一维数组,二维数组,三维数组……都是逻辑上的。
所谓的“行”,也是逻辑上的说法。
其实只有一维数组,所谓二维数组,它是一个一维数组,数组的每个元素(即“行”)是个数组;
所谓三维数组,它是一个一维数组,数组的每个元素是个一维数组(该一维数组的元素是是数组)
依次类推。
给定:
int a[2][2][2] = {
{ { 0, 1, }, { 2, 3, }, },
{ { 4, 5, }, { 6, 7, }, },
};
它的内存大概像这样:
------解决方案--------------------------------------------------------
.
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
.
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
.
------解决方案--------------------------------------------------------
a[1][1][1]
------解决方案--------------------------------------------------------
7
------解决方案--------------------------------------------------------
a[1][1][0]
------解决方案--------------------------------------------------------
6
------解决方案--------------------------------------------------------
a[1][0][1]
------解决方案--------------------------------------------------------
5
------解决方案--------------------------------------------------------
a[1][0][0]
------解决方案--------------------------------------------------------
4
------解决方案--------------------------------------------------------
a[0][1][1]
------解决方案--------------------------------------------------------
3
------解决方案--------------------------------------------------------
a[0][1][0]
------解决方案--------------------------------------------------------
2
------解决方案--------------------------------------------------------
a[0][0][1]
------解决方案--------------------------------------------------------
1
------解决方案--------------------------------------------------------
a[0][0][0]
------解决方案--------------------------------------------------------
0
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------