C++ 数组,在运行时设置数组大小

标签 c++ arrays

<分区>

我正在阅读 C++ Primer plus on arrays,它说了以下内容

typeName arrayName[arraySize]; 
//Arraysize cannot be a variable whose value is set while the program is running"

不过,我写了一个程序

#include <iostream>

using namespace std;    

int main()
{
    int n;
    cin>>n;

    int array[n];

    for(int i=0; i<n; i++)
    {
        cout<<array[i]<<endl;
    }
}

它工作正常,我可以在运行时设置数组的大小。我没有收到任何编译错误或运行时崩溃。

谁能解释一下发生了什么?

谢谢

最佳答案

一些编译器如 g++ 允许使用 C variable length arrays并且会在没有任何警告或错误的情况下愉快地编译代码。这不是标准的,而是编译器扩展。

如果您需要一个“数组”并且直到运行时才知道大小是多少,那么我建议您使用 std::vector您可以将它用作数组的直接替代品,但它允许运行时调整大小并提供许多其他有用的功能。

关于C++ 数组,在运行时设置数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987373/

相关文章:

arrays - 递归无单位元素类型

c# - C# 如何用从一个文本框中输入的值填充数组

Javascript在数组中添加相同的元素N次

c++ - OpenGL:将 Z 深度设置为统一与在顶点内冗余存储

java - c++ "interface"-类似于Java的类?

c++ - 通过引用获取 std::map 中的对象是否安全?

java - 从键盘输入数组时出错

javascript - 如何从该数组 Vue JS 显示 HTML

c++ - std::enable_if 和模板别名,防止用户填写 std::enable_if 参数

c++ - 为什么 std::logic_error 实际上不是从 std::exception 继承的?