int size=5;
int ar[size ]={O};
/* This operation gives an error -
variable sized array may not be
initialised. Then just try this.
*/
int size=5,i;
int ar[size];
for(i=0;i<size;i++)
{
ar[i]=0;
}
可变长度数组是编译器在编译时不知道其长度的数组。在您的例子中,length是一个变量。我得出这样的结论,因为如果 length是一个定义为文字整数的预处理器宏,那么初始化就会正常工作。1989年的第一个 C 语言标准不允许可变长度的数组,它们是在1999年添加的。尽管如此,C 标准还是不允许使用类似于您的表达式来初始化它们(尽管有人可能认为它可以或应该允许这样做)。
初始化变量数组的最佳方法如下:
int boardAux[length][length];
memset( boardAux, 0, sizeof(boardAux) );