【发布时间】:2018-06-07 03:19:09
【问题描述】:
我试图创建一个二维矩阵,其大小由用户选择(即 dims[] 值是通过 scanf 分配的),然后对其进行初始化。
当我尝试使用函数将值分配给 char 矩阵时,我的程序编译但崩溃了。
我想这与列数(第二个括号)以及我使用数组来定义矩阵二维大小的事实有关。该问题仅在分配值时出现(而不是在打印时)。
int main()
{
int dims[2] = {3,4};
//^The exact values are besides the point, chose some at random
char board[dims[0]][dims[1]];
initialize_board(board, dims);
}
函数如下所示(MAX_SIZE #定义为 25):
void initialize_board(char board[][MAX_SIZE], int board_side[])
{
for(int i=0; i<board_side[0]; i++)
{
for(int j=0; j<board_side[1]; j++)
{
board[i][j]='-';
}
}
}
函数声明如下:
void initialize_board(char board[][MAX_SIZE], int board_side[]);
我应该怎么做才能解决这个问题?
【问题讨论】:
-
崩溃发生在哪里?在线
board[i][j]='-';吗? -
是的,它发生在
board[i][j]='-';编译器是 GNU GCC..?这就是它在代码块中所说的,不确定是否应该说更具体的内容 -
您选择通过在第一个问题(为什么会崩溃?)中添加第二个问题(我应该如何设计我的代码?)来使这个问题成为一个移动目标。另一种方法是提出一个新的单独问题。祝你好运。
-
[MAX_SIZE]在这种情况下并不意味着“任何大小”或“任何大小到 MAX_SIZE”或类似的东西。它的意思是“正好是 MAX_SIZE”。 4 不完全是 MAX_SIZE。
标签: c arrays function matrix multidimensional-array