1. 数组
直观地看,数组(Array)为一个二元组<index, value>
的集合——对于每一个index,都有一个value与之对应。C语言中,以“连续的存储单元”实现数组:
int arr[5], *p_arr[5];
数组提供以\(O(1)\)的复杂度访问元素,下标从0开始。但是,数组的插入、删除操作却非常耗时,因为这涉及到了元素间的移动。
常见的矩阵,可用二维数组表示。二维数组本质上是一个一维数组,其中每个行单元也是一个一维数组,比如,二维数组int x[3][5]
的存储结构如下:
从上图可以看出,x共有4块存储区,一块用于用以存放行单元指针(x[0:2]),另外三块用于存放每一个行单元对应的一维数组。因此,x是一个长度为3的一维数组,而行单元x[0]又是一个长度为5的一维数组。