C 将2d数组传递给函数,并在工作完成时返回2d数组
我正在尝试将包含迷宫的2d数组传递给函数,函数将使用通过xbee接收的数据填充该数组,并将新数组返回到我的主数组。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;
但是,我得到一个错误: ../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
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
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通讯似乎有点混乱,所以还不能尝试)。