我已经定义了两个结构,当我循环设置它们的值时,它只循环两次,作为printf返回。有任何想法吗?为什么我的循环只迭代两次?
typedef struct {
int x;
int y;
unsigned char status;
} Cell;
typedef struct {
int sizeX;
int sizeY;
Cell cell[];
} World;
int main() {
int i, x, y;
i = 0;
World grid;
grid.sizeX = 10;
grid.sizeY = 10;
for (x = 0; x < grid.sizeX; x++) {
for (y = 0; y < grid.sizeY; y++) {
Cell cell;
cell.x = x;
cell.y = y;
printf("%d,%d: ", cell.x, cell.y);
grid.cell[i] = cell;
i++;
}
}
return 0;
}
编辑:
如下,感谢意见和您的耐心一个C小白正确答案!
'细胞细胞[];'!! – BLUEPIXY
由struct定义的单元格数组是否错误? – NoX
你有没有试过用调试器代码?你一定要详细阅读[*灵活的数组成员*](https://en.wikipedia.org/wiki/Flexible_array_member),因为你现在正在做的是写出一个零大小数组的界限,导致*未定义的行为*。 –