【发布时间】:2019-12-03 10:19:12
【问题描述】:
尝试制作井字游戏并遇到网格问题,我是 C 的新手,到处寻找,但似乎没有任何效果。
int main(void) {
char grid[GRID_HEIGHT][GRID_WIDTH];
grid = make_grid((char **)grid);
print_grid((char **)grid);
}
char ** make_grid(char **grid) {
char grid[GRID_HEIGHT][GRID_WIDTH] = {
{ '\n', ' ', '1', ' ', '|', ' ', '2', ' ', '|', ' ', '3', ' ' } ,
{ '\n', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-' } ,
{ '\n', ' ', '4', ' ', '|', ' ', '5', ' ', '|', ' ', '6', ' ' } ,
{ '\n', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-' } ,
{ '\n', ' ', '7', ' ', '|', ' ', '8', ' ', '|', ' ', '9', ' ' }
};
return grid;
}
void print_grid(char **grid) {
for (int row = 0; row < GRID_HEIGHT; row++) {
for (int column = 0; column < GRID_WIDTH; column++) {
printf("%c", grid[row][column]);
}
}
printf("\n");
}
如何将网格解析为函数并在程序不崩溃的情况下返回它?
【问题讨论】:
-
GRID_HEIGHT和GRID_WIDTH是如何定义的? -
还有,一旦你从
make_grid回来,grid就消失了,你不能引用它。 -
请注意,您不能将二维数组传递给
void print_grid(char **grid),它应该是void print_grid(char grid[][GRID_WIDTH])。 -
GRID_HEIGHT 和 GRID_WIDTH 是定义的常量整数
-
将 void print_grid(char **grid) 更改为 print_grid(char grid[][GRID_WIDTH]) 似乎有效,谢谢
标签: c function multidimensional-array declaration