数组-简介与推导出数组的地址

未匹配的标注

数组

数组类型 存储地址计算
一位数组a[n] a[i]的存储地址为: a+i*len
二维数组a[m][n] a[i][j] 的存储地址(按行存储)为:a+(i*n+j)*len; a[i][j] 的存储地址(按列存储)为: a+(j*n+i)*len

len 为 数组中的 每一个空间 占的 字节数。
i 就是下标

如何推出二维数组的存储地址计算公式?

假设有下表为二维数组:

0 1 2 3
1 求X的数组存储地址
2
3
推出横向公式

在这里,X:a[1][2] 横向是一维数组,所以 可以得到长度
a + 4*len
那我们实际上不知道len,我们设 col列

一行为 a + col * len

设 行数为i, 表中 就是这个 [1]
多行 为 a + col * len * i

那么我们横向得到了。

纵向,来看,X 的 前面还是有位数的。
那么表中计算 纵向: 2
实际上不知道纵向是多少,所以这里还是设 纵向为 j

则纵向值为: j*len

那么行计算公式为:
a + col * len * i + j*len
推导出:
a + (col*i+j)*len

推出列公式

a + j *raw*len + i*len

同样推导出:
a + (j*raw+i)len

数组公式是否需要背下来?

不需要,直接推出来就行了,而且可能面试时候,考试时候,起始点并不是从0开始。所以还是现场推吧

感谢关注

上海PHP自学中心-免费编程视频教学|Python教学|Web开发教学|全栈开发教学|加密与解密|Linux教学|Golang教学|

S3d25uqwht.png!large

7Dn78VKKcW.jpg!large

]

@author wangchunbo

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
wangchunbo
讨论数量: 0
发起讨论 查看所有版本


暂无话题~