在将大小声明为整数变量的数组时,为什么会出现编译器错误?

时间:2013-03-18 07:13:34

标签: c++ arrays visual-studio-2008 compiler-errors dev-c++

在visual studio中,我有一个错误,我之前在Dev-C ++中没有:

int project = (rand() % 5) + 1 ;
int P[project][3];

汇编:

  

错误C2057:预期的常量表达
  错误C2466:无法分配常量大小为0的数组   错误C2133:'P':未知大小

你能帮忙理解这个错误吗?

3 个答案:

答案 0 :(得分:1)

在C ++中,您只能创建一个大小为编译时常量的数组 数组P的大小需要在编译时知道它应该是一个常量,编译器会通过诊断消息警告你。

  

为什么不同的编译器会有不同的结果?

大多数编译器允许您通过编译器扩展创建可变长度数组,但它是非标准批准的,这样的使用将使您的程序在不同的编译器实现中不可移植。这就是你的体验。

答案 1 :(得分:1)

在这种情况下,您需要动态分配内存。所以你不能说int P[someVariable]。您需要使用int *mem = new int[someVariable]

查看this link.

答案 2 :(得分:0)

可变长度数组的标准C ++类是std::vector。在这种情况下,您将获得std::vector<int> P[3]; P[0].resize(project); P[1].resize(project); P[2].resize(project);