automation数组型是什么类型

如题所述

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)的。
温馨提示:答案为网友推荐,仅供参考
相似回答