#include <stdio.h>
#include <conio.h>
#define GRID_X 30
#define GRID_Y 20
unsigned char board[GRID_Y][GRID_X];
void draw_board(unsigned char **);
void print_board(unsigned char **);
int main()
{
draw_board(board);
getch();
return 0;
}
void draw_board(unsigned char **board)
{
unsigned int r_itr = 0,
c_itr = 0;
if(NULL == board)
{
printf("cannot create board..!!");
exit(0);
}
r_itr = 0;
for(c_itr = 0; c_itr < GRID_X; ++c_itr)
{
board[ r_itr ][ c_itr ] = '+'; /* <- crashing here */
board[ r_itr + (GRID_Y-1) ][ c_itr ] = '+';
}
c_itr = 0;
for(r_itr = 0; r_itr < GRID_Y; ++r_itr)
{
board[r_itr][c_itr] = '+';
board[ r_itr ][ c_itr + GRID_X-1 ] = '+';
}
print_board(board);
}
void print_board(unsigned char **board)
{
int r = 0,
c = 0;
for(r = 0; r < GRID_Y; ++r)
{
for(c = 0; c < GRID_X; ++c)
{
printf("%c", board[r][c]);
}
printf("\n");
}
}
上面的代码在我通过评论提到的点(崩溃在这里)崩溃。 我做了所有可能的边界检查(根据我的理解),我仍然无法检测到崩溃的原因? 我使用GNU GCC编译器和代码块IDE.please的帮助?访问2d数组时遇到细分?
你的函数的数据类型参数是错误的。 'board'不是'unsigned char **';它是一个数组数组。它们不是同义词。 – WhozCraig 2014-09-13 03:27:05
为什么要将'board'作为参数传递给所有函数?当它是全局变量时? – user1336087 2014-09-13 03:28:43
我知道它很奇怪,但它其实并不是全球性的,我以简单的方式表达了我的怀疑。 – CoolToshi45 2014-09-13 03:31:20