C 在二维数组上迭代时出现segfault

C 在二维数组上迭代时出现segfault,c,global-variables,C,Global Variables,我试图做一个简单的函数,它打印一个定义大小的数组。但是,在函数打印阵列后,会发生seg故障。此seg故障仅在boardSIZE定义为等于19或更大时发生。小于19,则不会出现分段错误。有人能解释为什么会这样,和/或建议我如何在这里定义大于20的全局变量而不产生seg故障 #include <stdio.h> #define boardSIZE 40 void printBoard(char [][boardSIZE]); int main() { char board[bo

我试图做一个简单的函数,它打印一个定义大小的数组。但是,在函数打印阵列后,会发生seg故障。此seg故障仅在boardSIZE定义为等于19或更大时发生。小于19,则不会出现分段错误。有人能解释为什么会这样,和/或建议我如何在这里定义大于20的全局变量而不产生seg故障

#include <stdio.h>
#define boardSIZE 40
void printBoard(char [][boardSIZE]);

int main()
{
    char board[boardSIZE][boardSIZE];
    printBoard(board);
}

void printBoard(char board[boardSIZE][boardSIZE])
{
    int i,j;
    for (i=0;i<=boardSIZE;i++){
            for (j=0;j<=boardSIZE;j++){
                    board[i][j]='X';
                    printf("%c",board[i][j]);
            }
            printf("\n");
    }
}
#包括
#定义boardSIZE 40
无效印刷板(字符[][板尺寸]);
int main()
{
字符板[boardSIZE][boardSIZE];
印刷板;
}
无效打印板(字符板[boardSIZE][boardSIZE])
{
int i,j;

对于(i=0;i不要使用
不要使用
您破坏了数组边界


您分配了
boardSIZE
,这意味着可用的最大索引是
boardSIZE-1
,因为第一个索引是
0
而不是
1
。因此更改
会破坏数组边界

您分配了
boardSIZE
,这意味着可用的最大索引是
boardSIZE-1
,因为第一个索引是
0
而不是
1
。因此更改
尝试将
局部变量更改为主要变量()!=全局变量
void printBoard(char board[boardSIZE][boardSIZE])
{
    int i,j;
    for (i=0;i<boardSIZE;i++){
            for (j=0;j<boardSIZE;j++){
                    board[i][j]='X';
                    printf("%c",board[i][j]);
            }
            printf("\n");
    }
}
void printBoard(char board[boardSIZE][boardSIZE]) {
    int i,j;
    for (i = 0; i < boardSIZE; i++){
            for (j = 0; j < boardSIZE; j++){
                    board[i][j] = 'X';
                    printf("%c",board[i][j]);
            }
            printf("\n");
    }