# 2.4.7 数组类型

数组是由任意多的槽组成的 Lisp 对象，和列表类似，每个槽都可以指向任何的 Lisp 对象；和列表不同，数组的内存是一大块连续的内存，因此查找速度会更快，基本上是常数时间。相比之下，列表的查找时间取决于被查元素的位置。（在列表末尾的元素的查找时间要远远长于列表开头的元素。）

Emacs 定义了四种数组：字符串，向量，布尔向量，以及字符表。

字符串是由字符组成的数组，而向量是由任意对象组成的数组。一个布尔向量只能装着 nil 或者 t。这些数组的最大长度可以一直到 fixnum 能取到的最大值，而这个最大值一般取决于具体的机器架构限制和可用内存。字符表是使用字符索引的数组，它可以储存任何对象。

数组的第一个元素的索引是 0，第二个元素的索引是 1，以此类推。这种索引叫做从零开始的索引。举个例子，一个 4 元素数组由0，1，2，3这四个索引切片。最大的索引值应当是数组长度减一。**一旦数组被创建了，它的长度就固定了。**

所有的 Emcas Lisp 数组都是一维的。（绝大多数的其他语言提供多维数组，不过这并不重要；在这里，你可以使用复合的一维数组模拟出一样的效果。）每种数组都有它们自己的读取语法。接下来的几章会详细解释。

另外，时刻记住，数组类型是序列类型的子集。数组类型又包括了字符串类型，向量类型，布尔向量类型以及字符表类型。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emacs-lisp.ivory.cafe/lisp-shu-ju-lei-xing/bian-cheng-lei-xing/2.4.7-shu-zu-lei-xing-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
