试图在C的房间结构定义中声明一个结构房间数组

时间:2018-09-02 22:14:46

标签: c arrays struct

用C做这样的事情是不可能的吗?

struct room{
        //Name of the room
        char* name;
        //Type fo the room
        char* type;
        //Array of outbound connections, max of six
        struct room connections[6];
        //A counter variable for how many connections the room actually has been assigned
        int numOfConnections;
};

我正在创建相互连接的房间的地图,我认为让每个房间跟踪与其连接的房间的最简单方法是制作一系列房间结构,然后放置房间在他们。

我收到一条错误消息,指出房间中的数组具有不完整的元素类型。错误在“结构室连接[6];”行上

2 个答案:

答案 0 :(得分:1)

为了在其内部存储struct,它必须是指针类型。否则,如注释中所述,此struct将占用无限空间。下面的更改使它成为指向6个struct room的指针。

struct room{
        //Name of the room
        char* name;
        //Type fo the room
        char* type;
        //Array of outbound connections, max of six
        struct room* connections[6];
        //A counter variable for how many connections the room actually has been assigned
        int numOfConnections;
};

答案 1 :(得分:1)

  

我正在创建相互连接的房间的地图

您选择的解决方案(在rooms的结构中包含room的数组)不代表您的问题。就像在rooms中包含其他room。正如您的错误消息所示,这也不可能。

您需要存储在room结构中的是它所连接的另一个rooms的链接(或地址)。这样做是可行的,因为这是一个非常明确的问题,有明确的解决方案。因此,在struct room中,将指针(即地址)存储到它所连接的房间。

struct room* connections[6]; 

上面的代码行表示connections是6个元素的数组,这些元素是指向struct room的指针。