尝试为指针赋值时出错。
我定义了两个结构:
typedef struct {
struct player *next; //pointers
struct player *prev;
} player;
typedef struct {
player onMe; //object
} field;
在代码的后面,我创建了一个结构体"player p"的实例,并尝试使用它:fields[][]是一个数组,用于保存类型为field的结构。
fields[p.x][p.y].onMe = *(p.next);
(*p.prev).next = &p.next;
在这些情况下,我得到"错误:取消引用指向不完整类型的指针"我也试过(&p.next),但得到了相同的结果。
fields[x][y].onMe.prev = (&p);
在这种情况下,我得到"警告:从不兼容的指针类型分配[默认启用]"
有人能告诉我我做错了什么吗?
您没有在任何地方声明struct player
,因此结构的定义是不完整的。尝试
typedef struct player_s {
struct player_s *prev;
struct player_s *next;
} player;
原因是struct player
是不完整类型。您用typedef
声明player
类型。但是您已经使用了struct player
作为它的一部分,它现在或其他任何地方都没有定义。
你应该使用类似的东西
typedef struct player {
struct player *next; //pointers
struct player *prev;
} player;
您可以为数组分配另一个结构A指针。onMe一个
顺便问一下,为什么要将ptr地址分配给另一个ptr?可能是您想将ptr指向的地址分配给另一个指针,如下所示:
(*p.prev).next = p.next