This commit is contained in:
krahets
2023-08-31 02:32:20 +08:00
parent a47a974a6a
commit e052cb1d3b
5 changed files with 13 additions and 17 deletions

View File

@@ -114,12 +114,7 @@
### 访问元素
数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(即首元素内存地址)和某个元素的索引,我们可以使用下公式计算得到该元素的内存地址,从而直接访问此元素。
```shell
# 元素内存地址 = 数组内存地址(首元素内存地址) + 元素长度 * 元素索引
elementAddr = firtstElementAddr + elementLength * elementIndex
```
数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(即首元素内存地址)和某个元素的索引,我们可以使用下图所示的公式计算得到该元素的内存地址,从而直接访问此元素。
![数组元素的内存地址计算](array.assets/array_memory_location_calculation.png)

View File

@@ -21,11 +21,10 @@
链表由结点组成,结点之间通过引用(指针)连接,各个结点可以存储不同类型的数据,例如 int、double、string、object 等。
相对地,数组元素则必须是相同类型的,这样才能通过计算偏移量来获取对应元素位置。例如,如果数组同时包含 int 和 long 两种类型,单个元素分别占用 4 bytes 和 8 bytes ,那么此时就不能用以下公式计算偏移量了,因为数组中包含了两种 `elementLength`
相对地,数组元素则必须是相同类型的,这样才能通过计算偏移量来获取对应元素位置。例如,如果数组同时包含 int 和 long 两种类型,单个元素分别占用 4 bytes 和 8 bytes ,那么此时就不能用以下公式计算偏移量了,因为数组中包含了两种长度的元素
```
// 元素内存地址 = 数组内存地址 + 元素长度 * 元素索引
elementAddr = firtstElementAddr + elementLength * elementIndex
```shell
# 元素内存地址 = 数组内存地址 + 元素长度 * 元素索引
```
!!! question "删除节点后,是否需要把 `P.next` 设为 $\text{None}$ 呢?"