数组大小未定义? C ++

时间:2010-11-29 22:42:59

标签: c++ arrays size

愚蠢的问题。但你能做到吗 (顺便说一下,这些是全局变量)

int size;
double Values[size];

如果我从文件中获取SIZE?

我知道你可能不能,但也许他们可能会根据我从文件中读到的数字重新调整大小(就像我在7中读到的那样,我知道值必须是7号)。

编译器抱怨,但我想知道他们是否有一些解决方法。 (这些必须保持全球变量btw。

3 个答案:

答案 0 :(得分:6)

不,您只能使用常量积分表达式指定这样的数组大小。在编译时已知的含义。

无论如何,你可能不应该这样做。相反,你应该使用矢量。

如果由于某种原因你不能使用矢量(我会严重怀疑),那么你的下一个选择就是使用动态分配的数组。但是,对于那些对世界有益的人来说,如果你这样做,请使用智能指针。

答案 1 :(得分:3)

你可以,实际上:)

C99 允许这样做。 MSVC不支持C99,GCC不支持。

C ++ 编译器也倾向于允许作为扩展(如果依赖于编译器扩展,你可以自己回答)。唯一的要求是您需要在声明size时知道Values

无论如何,std::vector通常更好(更安全,更稳定等等),除非你真的确实想要堆叠数据。

答案 2 :(得分:2)

如果动态分配它们,您可以这样做:

double *Values = new double[size];
...

delete [] Values;

但不是静态的。