以下行不起作用:C++二维数组初始化
int n1=10,v1=10;
int f[n1][v1]={};
error: variable-sized object ‘f’ may not be initialized
但低于作品行,为什么呢?
const int n1=10,v1=10;
int f[n1][v1]={};
以下行不起作用:C++二维数组初始化
int n1=10,v1=10;
int f[n1][v1]={};
error: variable-sized object ‘f’ may not be initialized
但低于作品行,为什么呢?
const int n1=10,v1=10;
int f[n1][v1]={};
数组初始值设定项需要为const。
由于const int值在整个程序中保持不变,所以int值可以改变位置。
我看到了,我可以把const int参数? void test1(const int&n){int_f0 [n];}; int f1 [n] = {}; (int i = 0; i
它似乎并不如此,这是用Cygwin下的G ++ 4.5.3测试的: http://codepaste.net/gwnck4 – 2013-05-08 21:48:26
在第二示例中,n1
和v1
已知是编译时间常数。在第一个例子中,它们可能不是。
在第一个中,'f'是一个可变长度的数组。那些不能被初始化。第二,它不是VLA,因此可以初始化。 – 2013-05-08 21:27:03
看到http://stackoverflow.com/questions/1887097/variable-length-arrays-in-c讨论为什么你被限制在固定长度的数组 – OOhay 2013-05-08 21:30:07