出于某种原因,在过去,我记得无法做到这样的事情:
int arraySize;
cin >> arraySize;
int array[arraySize];
Run Code Online (Sandbox Code Playgroud)
但最近,我再次尝试了这一点,并没有引起任何问题.我之前可以发誓这是在我的编译器中引发错误的东西(macOS Sierra,Xcode 8.1).语言中的任何内容都已更新以允许此操作吗? - 我可能完全记错了,这不是以前的问题,但我不确定.我认为必须在编译期间定义数组大小,并且用户无法选择它(这是您实现动态数组的地方).
我需要创建一个程序,用户输入所需的数组大小,然后C++代码创建它,然后允许数据输入.
这适用于Code Blocks IDE,但不适用于Visual Studio Community 2015
当我在CodeBlocks版本13.12中放入以下代码时,它可以工作
#include<iostream>
using namespace std;
int main()
{
int count;
cout << "Making the Array" << endl;
cout << "How many elements in the array " << endl;
cin >> count;
int flex_array[count];
for (int i = 0; i < count; i = i + 1)
{
cout << "Enter the " << i << " term " << endl;
cin >> flex_array[i];
}
for (int j = 0; j < count; j …Run Code Online (Sandbox Code Playgroud) 我在main()中执行此操作:
int i = 2; //not constant expression
int foo[i]; //no error?
Run Code Online (Sandbox Code Playgroud)
根据我的书,这不会给我一个错误.为什么?
(我在铿锵声3.1)
当我开始用C++编程时,我学会了使用动态内存分配来分配数组大小,如下所示:
int main()
{
int nArrayLength;
cout << "Enter an array length: ";
cin >> nArrayLength;
int *nArray = new int[nArrayLength];
// contents
delete[] nArray;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我使用mingw32-g ++ // GNU GCC编译器使用Code :: Blocks 12.11尝试了以下代码.
int main()
{
int nArrayLength;
cout << "Enter an array length: ";
cin >> nArrayLength;
int nArray[nArrayLength];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这也很好.
因此,在这种情况下,当更简单的方法也能正常工作时,我为什么要使用动态内存分配?