我的名为 tablero[2][2] 的数组是空的。当我尝试在其 [0][2] 或 [1][2] 位置分配一个数字时,[1][0] 和 [2][0] 位置也被分配。我不知道为什么会这样
void introducir_ficha(){
int valido = 0;
int pos_x, pos_y;
while(valido == 0){
printf("Introduce la posicion que quieres para la ficha \n");
scanf("%d",&pos_x);
printf("\n");
scanf("%d",&pos_y);
if(pos_x > 2 || pos_y > 2){
printf("La posicion no es valida... \n");
}else{
valido = comprobar_hueco(pos_x, pos_y);
//comprobar_hueco just returns if this position is empty or not
if(valido == 0){
printf("La posicion no es valida... \n");
}
}
}
printf("Posiciones %d %d \n",pos_x,pos_y);
tablero[pos_x][pos_y] = 1;
}
我希望你能帮助我。
最佳答案
tablero[2][2]
是一个 2 x 2 数组。因此,这四个元素是 [0][0]、[0][1]、[1][0] 和 [1][1]。没有 [0][2] 或 [1][2] 元素。
如果您尝试使用 2 的索引,它将超出行或列的边界,并可能换行到下一行/列,或者它将完全访问数组外部的内存并可能导致程序崩溃。
要使用从 0 到 2 的元素索引,您需要一个 3 x 3 数组。
关于c - 为什么我的代码会执行我没有编写的作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19927844/