|
发表于 2019-11-1 11:20:18
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2019-11-1 11:34 编辑
在内存中,任何多维数组实际都是以一维数组的形式呈现的,例如,二维数组 a ,与一维数组 aa 是完全一样的:
- int a[3][4] = {{ 1 , 2 , 3 , 4} ,
- { 5 , 6 , 7 , 8} ,
- { 9 , 10 , 11 , 12}} ;
复制代码- int aa[] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12} ;
复制代码
通过这种转换可以看出,把多维数组视为一维数组,每个元素的先后顺序保持不变。多维数组不过就是对一维数组分了一下组而已。
懂得了这种转换关系,事情就变得好办了,在 func() 的定义中,被传入的参数 b 会被视为每行 3 个元素,行数不定的二维数组,其实,不过就是把传入的一维数组按照每行 3 个元素进行了分组而已。我们仍然可以把 b 视为一维数组 bb,那么,显然:
- b[2][2] = bb[3 * 2 + 2] = bb[8]
复制代码
b[2][2] 是一维数组中下标为 8 的元素,那么,在 aa 中,下标为 8 的元素就是 9 了。 |
|