【中文名】数组(中国),陣列(台灣)
【定义】数据项的集合,数据项可以通过整数索引访问到。
【操作定义】忽略数组包含的数据项的数量,数组可以被视为包含如下操作的数据结构:
new()
set(i, v, A)
get(i, A)
注:i 是整数索引,v 是数据项的值,A 表示数组。从公理化语义上讲,这些操作可以被定义为如下:
new() returns an array
get(i, set(i, v, A)) = v
get(i, set(j, v, A)) = get(i, A) if i ≠ j
数组是确定的长度的,数组的索引通常有基于 0(0-based indexing) 或基于1(one-based indexing)的,基于0就是第一个元素的下标是0的意思。C/C++ 和 Java 中,就选用的是基于0的索引,而在 VB 中,不同的函数可能使用不同的方式(参这里)。理论上,下标可以基于任意整数。
C 的数组和指针结合起来有一些有意识的现象,比如 a[3] 和 3[a] 表示同样的值。本站有关 JavaScript 数组的内容参这里。Java不采用指针算法,而使用真正的阵列。Java 对数组提供一个属性 length
以获取它的长度(含有元素的个数)。
数组的维度。数组并没有限定数据项(元素)的类型,因而理论上就可以嵌套了,嵌套的层级就是数组的维度,嵌套为0,就是一维数组,嵌套为1就是二维数组,以此类推。
个人以为,可以把 array 视为 list 的一个特例。