在 C 中定义类似于 Python 的固定长度二维数组的更好方法是什么(不使用动态内存分配)?
what is a better way to define a fixed length 2d array similar to Python in C(without using dynamic memory allocation)?
我需要将棋盘存储到二维数组中,可以像 chessBoard[row][column]
一样访问它,类似于 Python 的方式,并且在数组中,我存储单个 char 元素,例如'x'
.
主要有两个问题:
- 当我试图像
char chessboard[10][10];
那样声明数组时,我找不到 return 的正确方法...在我尝试时像 char **storeChessBoard(){}
那样声明函数做 return chessboard;
,它给出 returning ‘char (*)[10]’ from a function with incompatible return type ‘char **’
错误。
- 我试过用struct来解决这个问题,但是找不到好的方法。如果这可以通过创建一个结构来解决,你能举例说明如何做吗?
在 C 中从函数返回数组是不可能的,我们只能 return 指针。从函数返回指向二维数组的指针是一场噩梦,代码变成 alien-looking:
char (*func (void))[10][10];
我不建议这样做,而是将数组作为参数传入和传出函数:
void func (size_t rows, size_t cols, char chessboard[rows][cols]);
我需要将棋盘存储到二维数组中,可以像 chessBoard[row][column]
一样访问它,类似于 Python 的方式,并且在数组中,我存储单个 char 元素,例如'x'
.
主要有两个问题:
- 当我试图像
char chessboard[10][10];
那样声明数组时,我找不到 return 的正确方法...在我尝试时像char **storeChessBoard(){}
那样声明函数做return chessboard;
,它给出returning ‘char (*)[10]’ from a function with incompatible return type ‘char **’
错误。 - 我试过用struct来解决这个问题,但是找不到好的方法。如果这可以通过创建一个结构来解决,你能举例说明如何做吗?
在 C 中从函数返回数组是不可能的,我们只能 return 指针。从函数返回指向二维数组的指针是一场噩梦,代码变成 alien-looking:
char (*func (void))[10][10];
我不建议这样做,而是将数组作为参数传入和传出函数:
void func (size_t rows, size_t cols, char chessboard[rows][cols]);