用非常量variables声明数组大小
我一直认为在C ++中声明一个数组时,大小必须是一个常量整数值。
例如 :
int MyArray[5]; // correct 要么
 const int ARRAY_SIZE = 6; int MyArray[ARRAY_SIZE]; // correct 
但
 int ArraySize = 5; int MyArray[ArraySize]; // incorrect 
这也是Bjarne Stroustrup在“C ++编程语言”中解释的内容:
数组元素的数量,数组绑定,必须是一个常量expression式(§C.5)。 如果你需要variables边界,使用一个vector(§3.7.1,§16.3)。 例如:
 void f(int i) { int v1[i]; // error : array size not a constant expression vector<int> v2(i); // ok } 
但令我惊讶的是,上面的代码在我的系统上编译得很好!
这是我试图编译的:
 void f(int i) { int v2[i]; } int main() { int i = 3; int v1[i]; f(5); } 
我没有错误! 我正在使用GCC v4.4.0。
有什么我失踪?
这是标准的GCC扩展: 请看这里 。
 使用-pedantic选项可以使GCC发出警告,或者在使用其中一个扩展时(如果需要考虑可移植性),可以使用-std=c++98来创build错误。 
您正在使用C99中称为VLA(可变长度数组)的function。 如果你像这样编译你的程序会更好:
 g++ -Wall -std=c++98 myprog.cpp