我试图做一个简单的函数,打印一个定义大小的数组。但是,在函数打印数组后,会发生seg错误。只有当boardSIZE定义为等于19或更大时,才会发生此seg故障。任何小于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");
}
}发布于 2014-11-17 20:53:11
不要在循环中使用<=。使用<。对于大小为n的数组,有效索引从0转到n-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");
}
}https://stackoverflow.com/questions/26981747
复制相似问题