数组是不是数据类型?如果是,是什么数据类型?

在各种语言中都有数组,但是数组是数据类型吗?基础数据类型或者是复合数据类型?
虽说array和list很像,但是list这个数据结构我可以自己通过基础类型的组合来实现,而array我可不可以自己来实现这种数据类型呢?
如果说可以自己来实现array的话,我不明白是如何通过index来瞬间获取对应的element的

C/C++中数组是内置的数据类型,但不是基础数据类型而是构造数据类型,语义上是有限个占据连续物理空间的相同数据元素的有序集合。C/C++数组在语言特性上的支持很简单,对应定义的形式T[n] a = {初始化列表};,实际进行的是分配sizeof(T)*n字节的空间,然后使这些空间内的值等于初始化列表中的值而已。分配的空间的回收是隐式的(对于自动变量是在函数结尾,对于静态变量是在进程结束),不需语言使用者干预。动态的线性表或者称为动态数组的数据结构不被C/C++语言特性直接支持,一般通过指针+长度手动调用库函数分配/释放空间,但同样可以通过[]运算符来实现引用其中的元素。对于[],如果不考虑重载,a[x]等价于*(a+x),其中a作为地址,而x是整数偏移量,实质工作(寻址)交给CPU完成。从目标代码的指令数量来考虑,这个操作的时间复杂度是O(1)(常量时间),也就是和a与x的值无关(所谓“瞬间”)。作为程序员来说无法通过C/C++语言本身来干涉这个过程。如果要实现类似的功能,例如封装一个array类,C++中可以通过重载[]运算符来实现,在实现的内部也调用了作用于指针的*、+或者[],并且一般来说,这个实现的复杂度也是O(1)的。
====
[原创回答团]

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-14
数组不算是基础数据类型的,基础的数据类型只有整形,浮点型,双精度浮点(double)字符型等,这些是基础数据类型,就是指不能在分割的类型,属于原子类型。而类似数组,集合,自定义的复杂的数据结构都不是基础数据类型。当然可以自己实现数组,数组实质就是一个顺序表,只是其中不包含一些查询插入等方法,也可以自己定义的。自己实现array那index是指向数组第一个元素的,要获取元素的话用你定义的array.element来调用。
第2个回答  2010-04-14
也可以啊~!也就是一个用连续同一类型组成的数据结构啊,你想啊,一个结构体,全都是用一种类型组成的,完全可以啊~!并且当定义多维数组时,也完全可以理解为,由它除最左边一维以外的那个数组组成的~!
第3个回答  2010-04-14
没必要搞太复杂。。。

数据就是一组 数据的集合。。。记住这个就行了。。。

int a[10];

代表 数组a中 包含 10个 int型 数据。。

char a[10]

代表 数组a 中 包含10个 字符型数据。。。
第4个回答  2010-04-14
引用