愚蠢的问题。但你能做到吗 (顺便说一下,这些是全局变量)
int size;
double Values[size];
如果我从文件中获取SIZE?
我知道你可能不能,但也许他们可能会根据我从文件中读到的数字重新调整大小(就像我在7中读到的那样,我知道值必须是7号)。
编译器抱怨,但我想知道他们是否有一些解决方法。 (这些必须保持全球变量btw。
答案 0 :(得分:6)
不,您只能使用常量积分表达式指定这样的数组大小。在编译时已知的含义。
无论如何,你可能不应该这样做。相反,你应该使用矢量。
如果由于某种原因你不能使用矢量(我会严重怀疑),那么你的下一个选择就是使用动态分配的数组。但是,对于那些对世界有益的人来说,如果你这样做,请使用智能指针。
答案 1 :(得分:3)
你可以,实际上:)
C99 允许这样做。 MSVC不支持C99,GCC不支持。
C ++ 编译器也倾向于允许作为扩展(如果依赖于编译器扩展,你可以自己回答)。唯一的要求是您需要在声明size
时知道Values
。
无论如何,std::vector
通常更好(更安全,更稳定等等),除非你真的确实想要堆叠数据。
答案 2 :(得分:2)
如果动态分配它们,您可以这样做:
double *Values = new double[size];
...
delete [] Values;
但不是静态的。