我正在用C语言编程游戏4 in-in-a-row,用户应该输入棋盘的大小,我被允许接受的最大2D数组(棋盘)是25x25.
简而言之,我可以通过调用两个函数来初始化2D数组的大小吗?用户可以在这两个函数中输入板的大小.我收到错误消息
Variable-sized object may not be initialized
个
在电话线上
int arr[starting_rows()][starting_columns()] = { 0 };
我正在用C语言编程游戏4 in-in-a-row,用户应该输入棋盘的大小,我被允许接受的最大2D数组(棋盘)是25x25.
简而言之,我可以通过调用两个函数来初始化2D数组的大小吗?用户可以在这两个函数中输入板的大小.我收到错误消息
Variable-sized object may not be initialized
个
在电话线上
int arr[starting_rows()][starting_columns()] = { 0 };
简而言之,我可以通过调用两个函数来初始化2D数组的大小吗?用户可以在其中输入板的大小(?)
No.
Perhaps in the next version of C (C24)?
int arr[starting_rows()][starting_columns()]
是variable length array (VLA). C目前不允许初始化VLA.
零填满memset(arr, 0, sizeof arr)
.@Weather Vane个
或者,定义并初始化一个最大大小的数组:int arr[25][25] = { 0 }
并使用它的一个子集.@Lundin个
对于OP,我建议使用第二种方法.获取用户输入并处理可能超出范围的值、不完整的输入、输入错误等,如果一切正常,则继续数组声明.