c-指针取消引用问题



尝试为指针赋值时出错。

我定义了两个结构:

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

最新更新