0

此代码在 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;
}
4

3 回答 3

3

使用 anstd::vector而不是数组(无论如何通常是个好主意):

std::vector<int> array1(size);

如果您在意,您看到的差异不是来自 Dev-C++ 本身,而是来自 gcc/g++。您使用的是 g++ 碰巧实现的 C++ 的非标准扩展,但 VC++ 没有。

于 2011-05-01T19:23:57.817 回答
0

使用变量调整自动数组大小的能力是 C 的一部分,而不是 C++ 的一部分,并且是 GCC 似乎想要强加给我们所有人的扩展。而且 DevC++ 是 cr*p 的一个邪恶部分,尽管它在这里没有错。进行更改(这完全是 GCC 所做的) - 我无法想象您(或其他任何人)为什么要使用它。

你真的应该用 GCC 编译你的 C++ 代码,并带有警告你这样的东西的标志。我建议至少 -Wall 和 -pedantic。

于 2011-05-01T19:23:12.383 回答
-1

或者

int array1 = new int[size];

我相信也会起作用(距离我上次接触 C++ 已经一个月或 3 个月了)

但实际上,如果使用 C++,请选择 std::vector,更加灵活。

于 2011-05-01T19:25:16.890 回答