对于一个类似冒险的游戏,我为每个区域都有一个结构,每个区域都需要有一个相关区域的列表,部队可以从母区域进入。
从理论上讲
typedef struct {
char* name;
region_t* connections;
} region_t;
然而,这当然是不可能的,因为在分析器到达类型区域T**之前,区域不存在。因此,我选择使用void*代替region_t*。
typedef struct {
char* name;
void* connections;
} region_t;
MiddleEast.connections = malloc(6 * sizeof(void*));
MiddleEast.connections = &SouthernEurope;
MiddleEast.(connections + 1) = &Egypt;
使用
region_t
sMiddleEast
、SouthernEurope
和Egypt
,我可以成功地将第一个连接设置为Southern Europe
,但是当我试图将.(connections + 1)
设置为&Egypt
时,会出现编译器错误。error: expected identifier before ‘(’ token
如何正确访问下一个内存地址?
最佳答案
解决方案不是void *
,而是正确使用结构。
具有名称的结构可以在其内部引用。类型不存在,但命名结构是这样的,因此您可以编写:
typedef struct region{
char* name;
struct region* connections;
} region_t;