我有一个二维数组(一个棋盘,但这与问题无关),我想使用函数来填充它。我写的程序工作正常,但启动程序后控制台崩溃了。知道问题出在哪里吗?谢谢。
#include <stdio.h>
#include <stdlib.h>
void fill(int board[8][8]);
int main()
{ int board[8][8];
fill(board);
return 0;
}
void fill(int board[8][8])
{
int a,b;
for (a = 1; a <= 8; a++)
{
for (b = 1; b<= 8; b++)
{
if ((a==1) || (a==8)) board[a][b] = 7;
if ((a==2) || (a==7)) board[a][b] = 9;
if ((a==3) || (a==6)) board[a][b] = 11;
if ((a==4) || (a==5)) board[a][b] = 13;
printf("%d", board[a][b]);
}
printf("\n");
}
}
最佳答案
我看到一个问题:在 C 中数组是从 0 开始索引的。所以最后一种情况是 board[7][7]
。
访问board[8][0]
实际上访问的是实际数组末尾之后的子数组(行)。如果数组后面的内存不属于您的程序(著名的段错误),它将编译,但会崩溃。
我想你应该将 a-1
和 b-1
放在方括号之间。
关于c - 将二维数组传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018001/