【发布时间】:2016-08-07 12:57:09
【问题描述】:
void printBoard(int board[8][8])
{
int i,j;
for(i = 0; i<8; i++)
{
for(j = 0; j<8; j++)
{
printf("%d ", board[i][j]);
}
printf("\n");
}
}
int main(){
int i, j;
int board[8][8];
for(i = 0; i<8; i++)
{
for(j = 0; j<8; j++)
{
scanf("%d", &board[i][j]);
}
}
printBoard(board);
为什么下面的void函数不打印二维数组?它只是继续要求输入。我也试过不带这个功能,还是不行。
我们本来打算将此作为家庭作业的一部分。有人可以解释一下如何解决这个问题吗?
【问题讨论】:
-
在主函数中,你有
scanf,它将要求输入64次二维数组board[8][8]的所有元素 -
你的程序有多少参数?
-
不要使用 magic numbers (搜索它 - 在编程上下文中)。正如你所注意到的,它很容易出错。将维度的长度传递给函数并传递一个 VLA,而不是固定宽度的数组。或者坚持使用固定宽度的数组,但对尺寸使用类似常量的宏!你应该早在这个练习之前就已经学会了。如果不知道,请询问你的老师(如果他不知道,他是个坏老师)。
标签: c for-loop multidimensional-array