我正在根据gomoku游戏在uni做作业。
作为该过程的一部分,我初始化游戏板,然后初始化游戏,这些是在头文件中定义的结构,我们必须使用定义的调用而不是使用全局变量(或丢失标记),但是我有点对过程感到困惑:
头文件:
struct game
{
struct player players[NUM_PLAYERS];
board gameboard;
struct player* current, *other;
};
enum input_result init_game(struct game*);
void play_game(void);
板头文件
enum cell
{
C_EMPTY,
etc...
};
typedef enum cell board[BOARDHEIGHT][BOARDWIDTH];
void init_board(board);
主要
我创建了一个名为bd的板(二维数组),对其进行了初始化,然后将值添加到了单独的c文件中的每个单元格中
在game.c文件中 我已经初始化了游戏结构并调用了功能, 传递游戏结构的地址
struct game curgame;
init_game(&curgame);
我遇到的问题是将板子传递给结构:
enum input_results init_game(struct game* newgame)
{
newgame.board = bd;
}
这是不正确的,我收到错误消息:
newgame未声明(此功能首次使用) bd未声明(此功能首次使用)
有人可以像我五岁那样向我解释如何将值传递给函数,以便我可以将它们添加到结构中,而无需编辑对函数的调用吗?
任何帮助将不胜感激
答案 0 :(得分:3)
首先,newgame
是指向结构而不是结构的指针,因此您不能在其上使用成员访问运算符.
。相反,您需要指向成员运算符->
的指针才能访问成员。
第二,因为gameboard
成员是一个数组,所以不能直接将其分配给它。而是将newgame->gameboard
传递给用于初始化板的函数。