c - 为什么我的代码会执行我没有编写的作业?

标签 c arrays

我的名为 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/

相关文章:

c - C 中的重复数字序列

c - 在c中评估Linux文件复制命令

java - 如何从 JSONObject Java 获取子属性

c++ - 将数组元素移动 n 个位置

c - 这是什么指针魔法

c - 用户通过带有输入文件的终端输入

php - 打印 PHP 二维数组

javascript - 为什么带有 some 方法的三元运算符会使该语句为假?

arrays - 使用 Vapor3 将多条记录插入数据库

arrays - 使用结构体存储动态数据