gpt4 book ai didi

c - 在结构错误中指向取消引用(间接需要指针操作数)

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:18 24 4
gpt4 key购买 nike

下面的代码将 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 语言的新手。谢谢。

最佳答案

while ((*(*current2))->next->y == 0)

不正确。正如错误“间接需要指针操作数”所说,您可以将 -> 应用于指针,但您是在 (*(*current2)) 上执行它,这是错误的构造( *current2 是类型为 struct s_coo 的对象,但是该结构对象上的第二个 * 应该是什么做什么?)。

解决方法:

while (((t_coo *)current2->next)->y == 0)

((t_coo *)current2->next)->y是什么意思

  1. 取void指针current2->next
  2. 并将其视为指向 t_coo 的指针(这是 struct s_coo 上的 typedef)
  3. 然后访问该指针上的 y 成员

关于c - 在结构错误中指向取消引用(间接需要指针操作数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com