我有一个非常简单的问题。以下代码(目的是创建一个整数型随机矩阵)不会编译。特别是
User-Agent
randomMatrix函数中的会导致此问题。它说表达式int m[nrow * ncol];
必须是一个常数。我是C ++的新手,因此我的尝试是没有创意的(例如,在参数前加上“ const”)。
有人可以给我提示吗? 谢谢。
nrow*ncol
答案 0 :(得分:0)
C ++中数组的大小必须在编译时固定。您不能依赖非常量参数。
除非有充分的理由,否则不应在C ++中使用C样式的数组。如果长度在编译时未知,则惯用的方法是使用std::vector
:
#include<vector> // <- At top
std::vector<int> m(nrow*ncol); // Instead of int m[nrow*ncol]
函数的返回类型应为std::vector<int>
。
答案 1 :(得分:0)
由于在编译时必须知道数组的长度,因此出现错误。您正在编写创建数组的代码,但是长度仅在运行时才知道。这意味着编译器不知道要分配多少空间,您必须自己做。创建数组时可以使用malloc
-但我不建议这样做。
最好的选择是使用std::vector
而不是数组。