c - 将二维数组传递给 C 函数

标签 c multidimensional-array

我有一个二维数组(一个棋盘,但这与问题无关),我想使用函数来填充它。我写的程序工作正常,但启动程序后控制台崩溃了。知道问题出在哪里吗?谢谢。

#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-1b-1 放在方括号之间。

关于c - 将二维数组传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018001/

相关文章:

c - 如何优雅地关闭我的服务器?

c - 在 C 中读取输入文件时忽略空格

c - 我如何使用当前系统时间在C中生成随机数

c - 使用 C 用户空间代码从 Linux/proc 接口(interface)读取的最佳方法是什么?

c - 使用 MPI 在后台收听和回复

c++ - 二维数组及其在 C++ 中的性能

cuda - 如何使用 make_cudaExtent 正确定义 cudaExtent?

使用 JSON Adventure 将 Javascript 数组转换为 Java 数组

Python:Numpy __deepcopy__ 类型错误

C - 反射(reflect)二维数组中的值