C 试图访问循环中的数组元素会导致分段错误,为什么?

C 试图访问循环中的数组元素会导致分段错误,为什么?,c,arrays,segmentation-fault,C,Arrays,Segmentation Fault,我正在尝试创建一个二维数组,每个坐标随机分配1或0。在到达坐标[20][3]之前,它工作正常。之后,它只抛出“分段错误11” 我完全不知道如何或为什么。特别是因为我可以创建一个200*200的矩阵,但它仍然只在坐标[200][3]处遇到同样的问题。所以它总是最后一个x坐标中的第三个y坐标,在那里会发生错误 #include <stdio.h> #include <stdlib.h> int main() { int x, y, i, j ; x = 20;

我正在尝试创建一个二维数组,每个坐标随机分配1或0。在到达坐标[20][3]之前,它工作正常。之后,它只抛出“分段错误11”

我完全不知道如何或为什么。特别是因为我可以创建一个200*200的矩阵,但它仍然只在坐标[200][3]处遇到同样的问题。所以它总是最后一个x坐标中的第三个y坐标,在那里会发生错误

#include <stdio.h>
#include <stdlib.h>

int main() {

  int x, y, i, j ;
  x = 20;
  y = 20;

  int grid [x][y];

  for ( i = 0; i <= x; i++) {
    for ( j = 0; j <= y; j++) {

      grid[i][j] = rand() % 2 ;

      printf("grid [%d][%d]: %d\n", i, j, grid[i][j]);

    }
  }
  return 0;
}
#包括
#包括
int main(){
int x,y,i,j;
x=20;
y=20;
整数网格[x][y];
对于(i=0;i,您正在运行数组的边界。这是C中未定义的行为,并且表现为崩溃

更改
i您正在运行的数组超出了数组的边界。这是C中未定义的行为,并且表现为崩溃


Change
iC对数组使用基于0的索引

int grid [x][y]
循环

 for ( i = 0; i <= x; i++) 
   for ( j = 0; j <= y; j++)

for(i=0;iC对数组使用基于0的索引

int grid [x][y]
循环

 for ( i = 0; i <= x; i++) 
   for ( j = 0; j <= y; j++)

for(i=0;i)有一个错误。你的索引只能达到19,你必须更改循环:for(i=0;i