下面的代码将 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
是什么意思
- 取void指针
current2->next
- 并将其视为指向
t_coo
的指针(这是 struct s_coo
上的 typedef)
- 然后访问该指针上的
y
成员
我是一名优秀的程序员,十分优秀!