【发布时间】:2017-11-08 14:37:06
【问题描述】:
我了解静态数组和动态数组的基本概念。这两者之间的主要区别是一个(静态数组)在编译时分配内存,另一个在运行时分配。但是,我们可以创建静态数组,其大小将是用户输入的值。
int value ;
cin >> value ;
int array [value] ;
int i = 0 ;
while(i < value)
{
cin >> array[i] ;
i ++ ;
}
所以程序直到运行时才知道这个数组的大小。 那么,如果静态数组也可以在运行时分配空间,那么静态数组和动态数组之间的实际根本区别是什么?
另外,谈到数组的可调整大小。要扩展一个动态数组,我们可以在将它的元素复制到一个新的双倍大小的动态数组后删除之前的数组。我们也可以对静态数组做同样的事情,对吧? [但是,在这种情况下无法删除原始数组,并使用冗余堆栈空间。那么这是 S.Array 和 D.Array 之间的唯一区别吗]
【问题讨论】:
-
“原始”数组永远不是动态的(它们不会改变大小),但可以动态分配。
std::vector是动态的(可以在运行时调整大小),应该在这种情况下使用。 -
VLA 不是标准 C++。这是一个扩展。
-
在编译时分配内存不,这是不可能的。
-
@manni66 你是对的。我认为它们的意思是一个静态的、固定大小的数组
标签: c++ arrays variable-length-array