将数组传递给C函数以更新结构

时间:2018-07-03 19:42:37

标签: c function struct enums

我正在根据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未声明(此功能首次使用)

有人可以像我五岁那样向我解释如何将值传递给函数,以便我可以将它们添加到结构中,而无需编辑对函数的调用吗?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

首先,newgame是指向结构而不是结构的指针,因此您不能在其上使用成员访问运算符.。相反,您需要指向成员运算符->的指针才能访问成员。

第二,因为gameboard成员是一个数组,所以不能直接将其分配给它。而是将newgame->gameboard传递给用于初始化板的函数。