我在某些代码中看到了一些我不明白的东西。它在退货声明中说了什么?
static cell_ptr UD_self(cell_ptr c) { return c->U = c->D = c; }
这里定义:
struct cell_s;
typedef struct cell_s *cell_ptr;
struct cell_s {
cell_ptr U, D, L, R;
int n;
union {
cell_ptr c;
int s;
};
};
答案 0 :(得分:1)
这只是写作的简便方法:
{
c->D = c;
c->U = c->D;
return c->U;
}
语句return c->U = c->D = c;
有效,因为赋值运算符=
返回刚刚分配的值。然后,此值将用于下一个分配。它从右到左关联,因此它意味着return (c->U = (c->D = c));