Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将2d数组传递给函数,并在工作完成时返回2d数组_C_Arrays_Multidimensional Array - Fatal编程技术网

C 将2d数组传递给函数,并在工作完成时返回2d数组

C 将2d数组传递给函数,并在工作完成时返回2d数组,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,我正在尝试将包含迷宫的2d数组传递给函数,函数将使用通过xbee接收的数据填充该数组,并将新数组返回到我的主数组。 但是,我得到一个错误: ../src/receiveMaze.c:132:13:错误:为数组类型的表达式赋值 我的代码是: int fillMaze(int maze[10][10]) { while (x != 'x') { for (row = 0; row < 10; row++) { for (column = 0;

我正在尝试将包含迷宫的2d数组传递给函数,函数将使用通过xbee接收的数据填充该数组,并将新数组返回到我的主数组。
但是,我得到一个错误:

../src/receiveMaze.c:132:13:错误:为数组类型的表达式赋值

我的代码是:

int fillMaze(int maze[10][10]) {

    while (x != 'x') {

        for (row = 0; row < 10; row++) {
            for (column = 0; column < 10; column++) {
                maze[row][column] = 1;
            }
        }
        row = 0;
        column = 0;
        while (row != 9 && column != 9) {
            // if the receive buffer is not empty ->
            if (xBee_receivedData()) {
                // -> get next received data byte of the buffer
                x = xBee_readByte();
                a = (int) x + 0;

                if (a == 1) {
                    if (row == 9) {
                        row = 0;
                        column++;
                    } else {
                        row++;
                    }
                } else {
                    maze[row][column] = 0;
                    if (row == 9) {
                        row = 0;
                        column++;
                    } else {
                        row++;
                    }
                }
            } else {
                printf("Error, did not receive data");
            }

            // Delay for the operation loop

        }
    }

    return maze[10][10];
}

您有多个问题:

  • return maze[10][10]
    不会返回矩阵,它将返回从数组的越界索引中获取的单个
    int

  • int-fillMaze(int-maze[10][10])
    表示函数返回单个
    int
    值,而不是矩阵(数组数组)

  • filledMaze=filledMaze(filledMaze)
    首先是错误的,因为
    filledMaze
    被声明为返回单个
    int

  • filledMaze=filledMaze(filledMaze)
    也是错误的,因为
    filledMaze
    是一个数组,您不能只将副本分配给数组

要解决“返回2d数组”的问题,您首先应该意识到,在这种情况下不需要它,因为
fillMaze
函数已经填充了作为参数传递的“2d数组”。因此,解决方案就是根本不返回任何内容:

// Fill in the passed "2d" array in-place, don't return anything
void fillMaze(int maze[10][10]) { ... }

// ...

fillMaze(filledMaze);

您有多个问题:

  • return maze[10][10]
    不会返回矩阵,它将返回从数组的越界索引中获取的单个
    int

  • int-fillMaze(int-maze[10][10])
    表示函数返回单个
    int
    值,而不是矩阵(数组数组)

  • filledMaze=filledMaze(filledMaze)
    首先是错误的,因为
    filledMaze
    被声明为返回单个
    int

  • filledMaze=filledMaze(filledMaze)
    也是错误的,因为
    filledMaze
    是一个数组,您不能只将副本分配给数组

要解决“返回2d数组”的问题,您首先应该意识到,在这种情况下不需要它,因为
fillMaze
函数已经填充了作为参数传递的“2d数组”。因此,解决方案就是根本不返回任何内容:

// Fill in the passed "2d" array in-place, don't return anything
void fillMaze(int maze[10][10]) { ... }

// ...

fillMaze(filledMaze);

好吧,我想大部分我都明白了,但你的第一点对我来说并不容易理解。我必须在函数中写入什么作为参数?我想我只是在这里声明函数需要一个10*10数组。@Halunke第一点是关于return语句的。它将得到第十一个数组的第十一个元素返回。在一个包含十个元素的十个数组中。@Halunke啊,这与参数无关,与返回类型有关。您在问题中声明要返回一个“2d”数组,但声明函数应返回一个
int
值。现在我明白了,非常感谢。我想它现在可以工作了(因为我的XBee通讯似乎有点混乱,所以还不能真正尝试)。好吧,我想我已经掌握了大部分,但是你的第一点对我来说并不简单。我必须在函数中写入什么作为参数?我想我只是在这里声明函数需要一个10*10数组。@Halunke第一点是关于return语句的。它将得到第十一个数组的第十一个元素返回。在一个包含十个元素的十个数组中。@Halunke啊,这与参数无关,与返回类型有关。您在问题中声明要返回一个“2d”数组,但声明函数应返回一个
int
值。现在我明白了,非常感谢。我猜它现在可以工作了(因为我的XBee通讯似乎有点混乱,所以还不能尝试)。