gpt4 book ai didi

c - 如何将具体的二维数组连接到先前定义的指向头文件中指针的指针?

转载 作者:行者123 更新时间:2023-11-30 17:13:27 25 4
gpt4 key购买 nike

我正在尝试实现一个跳棋游戏。我必须使用给定的头文件,其中包含一些#defines 和语句。其中之一是:

typedef char** board_t;

我知道这是一个指向 char 的指针,即:

 **board_t = board_t[0][0] 

在 checkers.c 文件中,我正在使用棋盘二维数组输入实现一些方法。

在其中一些中,我有兴趣更改板,因此我想使用指针插入它。

考虑到 header typedef,可以这样定义板吗:

char board_t [BOARD_SIZE][BOARD_SIZE];

然后在方法中使用它:

void init_board(board_t){...}

在本文中,我真的传递了一个指向先前定义的二维数组的指针吗?

如果是这样,我如何在方法中使用此指针来访问 board[i][j]

最佳答案

如果你这样做:

typedef char** board_t;

然后,声明并分配内存,如下所示:

int i;
board_t arr = malloc(BOARD_SIZE * sizeof(char *));
for(i = 0; i < BOARD_SIZE; i++)
arr[i] = malloc(BOARD_SIZE * sizeof(char));

对于定义如下的函数:

void init_board(board_t arr){...}

像这样传递:

init_board(arr);

一些注意事项:

  • 如果您使用 typedef 作为指针类型的别名,则无法对新创建的类型名称进行类似数组的声明(在其中指定两个索引大小)。您必须像处理指针一样声明和分配内存。
  • 在函数 init_board 中,您可以将参数 arr 视为二维数组,并引用其值,如 arr[row][col]

关于c - 如何将具体的二维数组连接到先前定义的指向头文件中指针的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30829486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com