c - 遍历二维数组时出现段错误

标签 c global-variables

我正在尝试做一个简单的函数,它打印一个定义大小的数组。但是,在函数打印数组后,发生段错误。此段错误仅在 boardSIZE 定义为等于 19 或更大时发生。任何小于 19 的值,都不会发生段错误。谁能解释这是为什么,和/或建议我如何执行类似的任务,即在此处定义大于 20 的全局变量而不会出现段错误?

#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");
    }
}

最佳答案

不要使用 <=在你的循环中。使用 < .对于大小为 n 的数组, 有效索引来自 0n-1 .因此,您的循环正在访问越界位置。

更改您的 printBoard()功能:

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");
    }
}

关于c - 遍历二维数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26981747/

相关文章:

c - 将结构从 pthread_create 传递到函数中

c - 在 C 中的同一函数中将字符值重置为 null

c++ - 进行变换的最快方法(移动、旋转、缩放)

c - 数组函数导致另一个数组的值发生变化

php - 需要一个任意 PHP 文件,而不会将变量泄漏到作用域中

c - 指向全局数组中元素位置的全局变量(在 C 中)

c++ - 我可以确定参数是否是字符串文字吗?

c++ - 全局 vector 变量的 Extern 不起作用

c - 局部和全局冲突时如何访问全局变量

c++ - 无法找到未定义行为的原因