这段代码在流血dev - c++ 4.9.9.2中编译得很好,但在Visual Studio 2010中我得到一个错误:表达式必须有一个常量值。如何在用户输入数组大小后不使用指针创建数组?
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int size = 1;
cout << "Input array size ";
cin >> size;
int array1[size];
system("PAUSE");
return 0;
}
使用std::vector
代替数组(通常是个好主意):
std::vector<int> array1(size);
如果你在意的话,你看到的差异不是来自dev - c++本身,而是来自gcc/g++。你正在使用的是c++的一个非标准扩展,g++碰巧实现了,但vc++没有。
使用变量自动调整数组大小的能力是C的一部分,而不是c++的一部分,并且是GCC似乎想要强加给我们所有人的扩展。devc++是一种邪恶的代码,尽管它在这里没有错。为了改变(这完全是GCC做的)-我无法想象为什么你(或任何人)想要使用它。
你真的应该用带有警告标志的GCC来编译你的c++代码。我建议-Wall和-pedantic作为最小值
或
int array1 = new int[size];
也能很好地工作(距离我上次接触c++已经有一三个月了)
但是,如果使用c++,使用std::vector,更灵活。