数组简单介绍

来源:互联网 发布:投标书编制软件 编辑:程序博客网 时间:2024/06/07 07:22

数组是一种最简单的数据结构,又一块连续内存组成并按照顺序存储数据。创建数组时,需要指定数组容量大小,然后根据大小分配内存。因此数组的空间效率不是很高,经常会有空闲的区域没有得到充分利用。但由于数组中的内存是连续的,于是可以根据下标在O(1)时间读/写任何元素,故时间效率却是很高的,于是常应用于实现简单的哈希表。
在C++中,使用STL的vector来解决数组空间效率不高的问题。先申请一个较小的空间,往进添加数据,当数据的数目超过了数组的容量时候,会自动申请一块更大的空间(vector每次扩容时,新的容量都是前一次的二倍),把之前的数据复制到新的数组中,在把之前的内存释放了,就可减少空间的浪费。但扩容之后,又会有额外的大量操作,对时间性能有了很大的负面影响,因此,使用动态数组时,要尽量减少改变数组容量大小的次数。
在C/C++中,数组和指针是相互关联但又存在一些区别的两个概念。声明一个数组时候,数组的名字也是一个指针,该指针指向数组中的第一个元素。

int getSize(int data[]){    return sizeof(data);}int main(){    int temp_data[] = {1, 2, 3, 4, 5}    int size1 = sizeof(temp_data);    //size1 = 20    int *point_data = temp_data;    int size2 = sizeof(point_data);   //size2 = 4    int size3 = getSize(temp_data);   //size3 = 4}

sizeof(temp_data)是求数组的大小,该数组中包含5个int型整数,故size1 = 20。point_data声明为一个指针,指向数组第一个元素,在32位操作系统中,指针的大小为4字节,故size2 = 4。在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针,故size3 = 4。

1 0