我有一个小问题,试图malloc这个结构.
这是结构的代码:
这是结构的代码:
typedef struct stats { int strength; int wisdom; int agility; } stats; typedef struct inventory { int n_items; char **wepons; char **armor; char **potions; char **special; } inventory; typedef struct rooms { int n_monsters; int visited; struct rooms *nentry; struct rooms *sentry; struct rooms *wentry; struct rooms *eentry; struct monster *monsters; } rooms; typedef struct monster { int difficulty; char *name; char *type; int hp; } monster; typedef struct dungeon { char *name; int n_rooms; rooms *rm; } dungeon; typedef struct player { int maxhealth; int curhealth; int mana; char *class; char *condition; stats stats; rooms c_room; } player; typedef struct game_structure { player p1; dungeon d; } game_structure;
这里是我有一个问题的代码:
dungeon d1 = (dungeon) malloc(sizeof(dungeon));
解决方法
您不能将任何东西投射到结构类型.我想你想写的是:
dungeon *d1 = (dungeon *)malloc(sizeof(dungeon));
但是请不要在C程序中转换malloc()的返回值.
dungeon *d1 = malloc(sizeof(dungeon));
将工作很好,不会隐藏#include错误从你.