Typedef 指向二维数组的指针

Typedef a pointer to 2D array

我需要声明一个类型(使用 typedef),这是一个指向二维数组的字符指针。

typedef char* board {
    char* arr[8][8];
}chessboard;

但它不会编译。我也发现了这个:

typedef char board[8][8];

这有效,但它实际上不是指向数组的指针。 我会很感激任何想法,谢谢。

正在做

typedef char (*BoardPointer)[8][8]

BoardPointer定义为指向char的8x8数组的类型,所以

BoardPointer boardpointer;

boardpointer 定义为指向 char.

的 8x8 数组的指针

要分配一个 8x8 char 的数组,您可以这样做:

BoardPointer boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
  perror("malloc() failed");
}
else
{
  // use boardpointer here. Set all elements to '[=12=]' for example:
  for (size_t r = 0; r < 8)
  {
    for (size_t c = 0; c < 8)
    {
      (*boardpointer)[r][c] = '[=12=]';
    }
  }

  free(boardpointer);
}

正如其他人指出的那样,typedefing 指针容易出错并且使代码难以阅读,您也可以这样做:

typedef char Board[8][8]

Board * boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
  perror("malloc() failed");
}
else
{
  // use board here. Set all elements to '[=13=]' for example:
  for (size_t r = 0; r < 8)
  {
    for (size_t c = 0; c < 8)
    {
      (*boardpointer)[r][c] = '[=13=]';
    }
  }

  free(boardpointer);
}

或者只是

typedef char Board[8][8]

Board board;
// use board here. Set all elements to '[=14=]' for example:
for (size_t r = 0; r < 8)
{
  for (size_t c = 0; c < 8)
  {
    board[r][c] = '[=14=]';
  }
}