This commit is contained in:
krahets
2023-08-31 02:30:38 +08:00
parent 5f4a7728b2
commit 00adffaca7
6 changed files with 79 additions and 64 deletions
+1 -6
View File
@@ -120,12 +120,7 @@ comments: true
### 2.   访问元素
数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(即首元素内存地址)和某个元素的索引,我们可以使用以下公式计算得到该元素的内存地址,从而直接访问此元素。
```shell
# 元素内存地址 = 数组内存地址(首元素内存地址) + 元素长度 * 元素索引
elementAddr = firtstElementAddr + elementLength * elementIndex
```
数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(即首元素内存地址)和某个元素的索引,我们可以使用图 4-2 所示的公式计算得到该元素的内存地址,从而直接访问此元素。
![数组元素的内存地址计算](array.assets/array_memory_location_calculation.png)
+3 -4
View File
@@ -25,11 +25,10 @@ comments: true
链表由结点组成,结点之间通过引用(指针)连接,各个结点可以存储不同类型的数据,例如 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}$ 呢?"