设置数组';s大小基于用户';以c++;但是const不起作用 我需要根据C++中的CIN用户输入来设置数组的大小,我不知道它为什么不能编译。 int input; cin >> input; const int N = input; int array[N];

设置数组';s大小基于用户';以c++;但是const不起作用 我需要根据C++中的CIN用户输入来设置数组的大小,我不知道它为什么不能编译。 int input; cin >> input; const int N = input; int array[N];,c++,arrays,initialization,C++,Arrays,Initialization,这不管用吗?我一定错过了什么 这不管用吗 不应该 我一定错过了什么 您忽略了一个事实,即数组变量的大小必须是编译时常量。用户在运行时提供的值在编译时不可能已知 要创建具有动态大小的数组,需要创建动态数组。最简单的方法是使用std::vector静态自动分配大小可变的数组是不可能的。这样一个数组的大小必须是编译时常量:也就是说,它的大小是在可执行文件中编码的,因此编译器必须通过单独读取源代码来了解它 动态数组的两种最常见的方法是std::vectors,它是一个整洁的小类,可以为您处理很多这方面的

这不管用吗?我一定错过了什么

这不管用吗

不应该

我一定错过了什么

您忽略了一个事实,即数组变量的大小必须是编译时常量。用户在运行时提供的值在编译时不可能已知

要创建具有动态大小的数组,需要创建动态数组。最简单的方法是使用
std::vector

静态自动分配大小可变的数组是不可能的。这样一个数组的大小必须是编译时常量:也就是说,它的大小是在可执行文件中编码的,因此编译器必须通过单独读取源代码来了解它

动态数组的两种最常见的方法是
std::vector
s,它是一个整洁的小类,可以为您处理很多这方面的问题;以及使用
new
关键字创建数组,这是一种更为流行但有其地位的方法


我建议在这里观看Cherno在动态阵列上的视频:。这是一个很好的入门教程。

在本例中,尝试自动分配数组;不是静态的,我不确定我在跟踪你。你说“自动”是指“动态”吗?在我看来,从代码示例中可以看出,当他们想要动态分配时,他们是静态分配的;不是动态的。分配有四个存储持续时间:自动、动态、静态和线程。示例数组具有(或者如果格式正确,将具有)自动存储。感谢您的更正:我一直错误地使用术语“static”来表示堆栈上基于作用域的分配。