数组是一种连续内存存储的线性表,是程序设计中非常重要的一种数据结构。数组对应了一块连续的内存,而且数组中每一项所占内存的大小是一定的。它非常的简单易用,通过索引可以非常快速地定位到某个元素。
相比于链表(详细见前一节),数组的优点是: 快速索引,而且由于是固定大小元素的连续内存,不再需要指针域,能利用更少的内存存储更多的数据。缺点是: 自定义的时候,数组所占的内存大小就固定了,并且已经分配了,程序只能在这个区域进行数据的操作。
一维数组用的比较广泛,经常用来作为其他数据结构的基础。很多时候,程序中使用了数组的思想,但是没有真正的使用数组,比如说直接分配一块连续的内存作为一个数组,却没有使用数组名,而是使用了一个指针代替,而这种情况,完全可以使用数组的类似操作。
对于二维数组来讲,虽然分为行和列,但是本质上它也是一段连续的内存。在C/C++中,&ARRAY[i][j] = ARRAY + i*列 + j;。
这个在索引位图数据的时候,经常用到。比如手机屏幕对应的位图,可以将它看做一个二维数组来进行各种操作。
相比于链表(详细见前一节),数组的优点是: 快速索引,而且由于是固定大小元素的连续内存,不再需要指针域,能利用更少的内存存储更多的数据。缺点是: 自定义的时候,数组所占的内存大小就固定了,并且已经分配了,程序只能在这个区域进行数据的操作。
一维数组用的比较广泛,经常用来作为其他数据结构的基础。很多时候,程序中使用了数组的思想,但是没有真正的使用数组,比如说直接分配一块连续的内存作为一个数组,却没有使用数组名,而是使用了一个指针代替,而这种情况,完全可以使用数组的类似操作。
对于二维数组来讲,虽然分为行和列,但是本质上它也是一段连续的内存。在C/C++中,&ARRAY[i][j] = ARRAY + i*列 + j;。
这个在索引位图数据的时候,经常用到。比如手机屏幕对应的位图,可以将它看做一个二维数组来进行各种操作。