在 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'.

主要有两个问题:

  1. 当我试图像 char chessboard[10][10]; 那样声明数组时,我找不到 return 的正确方法...在我尝试时像 char **storeChessBoard(){} 那样声明函数做 return chessboard;,它给出 returning ‘char (*)[10]’ from a function with incompatible return type ‘char **’ 错误。
  2. 我试过用struct来解决这个问题,但是找不到好的方法。如果这可以通过创建一个结构来解决,你能举例说明如何做吗?

在 C 中从函数返回数组是不可能的,我们只能 return 指针。从函数返回指向二维数组的指针是一场噩梦,代码变成 alien-looking:

char (*func (void))[10][10];

我不建议这样做,而是将数组作为参数传入和传出函数:

void func (size_t rows, size_t cols, char chessboard[rows][cols]);