下面的代码将current2的一个节点移动到我想要停止的位置:
typedef struct s_coo
{
int x;
int y;
int z;
void *next;
} t_coo;
typedef struct s_env
{
void *mlx;
void *win;
t_coo **head;
} t_env;
int draw_map_y(t_env *e)
{
t_coo *current;
t_coo *current2;
current = *(e->head);
current2 = (*(e->head))->next;
while (current2->y == 0)
current2 = current2->next;
return (0);
}
所以我尝试在while循环中写作:
while ((*(*current2))->next->y == 0)
而不是:
while (current2->y == 0)
但我收到错误"间接需要指针操作数"。任何人都可以解释我并告诉我如何以正确的方式写出来吗?我对C很新。谢谢。
答案 0 :(得分:1)
while ((*(*current2))->next->y == 0)
不正确。因为错误"间接需要指针操作数"说,你可以申请 - >指针,但你正在做(*(* current2))这是错误的构造(*current2
是struct s_coo
类型的对象,但该结构对象上的第二个*
应该做什么?)
解决方案:
while (((t_coo *)current2->next)->y == 0)
((t_coo *)current2->next)->y
的含义是
current2->next
t_coo
的指针(struct s_coo
上的typedef)y
成员答案 1 :(得分:1)
你得到的错误"间接需要指针操作数"是因为你要取消引用指针。 下一个指针的类型为void *。您需要将其转换为已知指针类型。 这应该有效,
while(((t_coo*)(current2->next))->y == 0)