此代码在Bloodshed 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;
}
答案 0 :(得分:3)
使用std::vector
代替数组(无论如何通常都是个好主意):
std::vector<int> array1(size);
如果您关心,您所看到的差异不是来自Dev-C ++本身,而是来自gcc / g ++。您正在使用的是C ++的非标准扩展,g ++恰好实现,但VC ++没有。
答案 1 :(得分:0)
使用变量调整自动数组大小的能力是C的一部分,不是C ++的一部分,并且是GCC似乎想要强加给我们所有人的扩展。 DevC ++是cr * p的一个邪恶的部分,虽然它在这里没有错。改变(这完全是GCC的做法) - 我无法想象为什么你(或其他任何人)想要使用它。
你应该用GCC编译你的C ++代码,并用标志警告你这样的事情。我建议-Wall和-pedantic作为最低限度。
答案 2 :(得分:-1)
或
int array1 = new int[size];
将会工作,我相信(自从我上次接触C ++以来已经过了一个月或3个月)
但实际上,如果使用C ++,那么选择std :: vector会更灵活。