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

Why is there a compiler error, when declaring an array with size as integer variable?

本文关键字:为什么 错误 编译器 变量 数组 整数 声明      更新时间:2023-10-16

在visual studio中,我有一个错误,我以前没有在dev - c++:

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

错误C2057:期望的常量表达式
错误C2466:不能分配一个常量大小为0的数组
错误C2133: 'P':未知大小

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

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

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

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

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

用于变长数组的标准c++类是std::vector。这里是std::vector<int> P[3]; P[0].resize(project); P[1].resize(project); P[2].resize(project);

相关文章: