2013-07-07 51 views
1

尝试为指针赋值时出现错误。解除引用指针的问题

我已经定义2层结构:

typedef struct { 
    struct player *next; //pointers 
    struct player *prev; 
} player; 

typedef struct { 
    player onMe; //object 
} field; 

在代码后,我创建结构“玩家P”的一个实例并尝试使用它: 字段[] []是保持一个数组类型字段的结构。

fields[p.x][p.y].onMe = *(p.next); 
(*p.prev).next = &p.next; 

在这些情况下,我得到“错误:提领指向不完全类型” 我也试过(& p.next),但有相同的结果。

fields[x][y].onMe.prev = (&p); 
在这种情况下

我得到“警告:从兼容的指针类型[默认启用]分配”

有人能告诉我什么,我做错了什么?

回答

0

您不要在任何地方声明struct player,因此结构的定义不完整。尝试

typedef struct player_s { 
    struct player_s *prev; 
    struct player_s *next; 
} player; 
+1

这样做的伎俩,真棒。非常感谢:) –

0

原因是struct player是不完整的类型。您声明player类型与typedef。但是您已经使用了struct player作为它的一部分,现在或其他地方都没有定义它。

你应该使用类似

typedef struct player { 
    struct player *next; //pointers 
    struct player *prev; 
} player; 
+1

请在这里解释-1。 –

+0

你是什么意思? –

+0

有人倒退我的答案。 –

0

您分配另一个结构的指针array.onMe之一,它是可能的。
顺便说一下,为什么你分配ptr地址到另一个ptr?可能是你想分配一个ptr指向另一个指针,如下所示的地址:

(*p.prev).next = p.next