【问题标题】:array size defined from user's input C++ [duplicate]从用户的输入 C++ 定义的数组大小 [重复]
【发布时间】:2015-06-15 16:53:28
【问题描述】:

我很惊讶下面的代码编译得很好。我一直认为数组大小在编译时必须是一个常数,但似乎我可以接受用户的输入并将其用作数组大小。我正在将 GCC 与代码块 IDE 一起使用。有没有人尝试过,这样做有什么问题吗?

int size;
cout<<"Enter array size : "<<endl;
cin>>size;
int arr[size];
// ...more action array with the array after which works fine   

【问题讨论】:

标签: c++ arrays


【解决方案1】:

此功能称为Variable length array,并在C99 标准中引入,再次使其成为C11 标准中的可选功能。

我对@9​​87654325@ 标准没有具体的想法,但这可能是作为编译器扩展提供的支持功能。 AFAIK,C++ 标准中没有任何内容支持 VLA。或者,在C++ 中使用std::vector 被认为是一种更好的方法。

【讨论】:

  • 在这种情况下,数组是否仍会存储在堆栈中?
  • @Engineer999 在Cgcc 分配VLA in stackstd::vector 使用未从堆栈分配的动态内存,AFAIK。
  • 谢谢。那么通过在向量上使用 push_back 函数,这会在堆上创建元素吗?这实际上与拥有指向元素类型的指针并使用“new”相同吗
猜你喜欢
  • 1970-01-01
  • 2016-02-10
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多