【问题标题】:Why can I initialize the size of an array by taking user input in C++? [duplicate]为什么我可以通过 C++ 中的用户输入来初始化数组的大小? [复制]
【发布时间】:2021-12-18 02:36:46
【问题描述】:

鉴于用户输入是在运行时获取的,但数组是在编译时创建的。这段代码如何以及为什么起作用?

#include <iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int arr[n]; //Why can I use this statement to create an array?
}

【问题讨论】:

    标签: c++ arrays variable-length-array


    【解决方案1】:

    这是一个非标准的扩展,由 gcc 和 clang 支持。

    它的工作原理是在声明数组时在堆栈上分配空间,有点像alloca

    当函数返回(或arr 超出范围)时,分配的内存会自动释放(通过调整堆栈指针)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-20
      • 2020-03-20
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 2021-06-08
      相关资源
      最近更新 更多