在visual studio中,我有一个错误,我之前在Dev-C ++中没有:
int project = (rand() % 5) + 1 ;
int P[project][3];
汇编:
错误C2057:预期的常量表达
错误C2466:无法分配常量大小为0的数组 错误C2133:'P':未知大小
你能帮忙理解这个错误吗?
答案 0 :(得分:1)
在C ++中,您只能创建一个大小为编译时常量的数组
数组P
的大小需要在编译时知道它应该是一个常量,编译器会通过诊断消息警告你。
为什么不同的编译器会有不同的结果?
大多数编译器允许您通过编译器扩展创建可变长度数组,但它是非标准批准的,这样的使用将使您的程序在不同的编译器实现中不可移植。这就是你的体验。
答案 1 :(得分:1)
在这种情况下,您需要动态分配内存。所以你不能说int P[someVariable]
。您需要使用int *mem = new int[someVariable]
答案 2 :(得分:0)
可变长度数组的标准C ++类是std::vector
。在这种情况下,您将获得std::vector<int> P[3]; P[0].resize(project); P[1].resize(project); P[2].resize(project);